@droppii-org/chat-sdk 0.1.72 → 0.1.74

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 (343) hide show
  1. package/dist/components/conversation-detail/ConversationDetailInput.d.ts.map +1 -1
  2. package/dist/components/conversation-detail/ConversationDetailInput.js +6 -2
  3. package/dist/components/conversation-detail/PinnedMessageBar.d.ts.map +1 -1
  4. package/dist/components/conversation-detail/PinnedMessageBar.js +23 -20
  5. package/dist/components/conversation-detail/PinnedMessageItem.d.ts.map +1 -1
  6. package/dist/components/conversation-detail/PinnedMessageItem.js +1 -5
  7. package/dist/hooks/conversation/useBotMainMenu.d.ts +0 -1
  8. package/dist/hooks/conversation/useBotMainMenu.d.ts.map +1 -1
  9. package/dist/hooks/conversation/useBotMainMenu.js +0 -10
  10. package/dist/hooks/conversation/useSwitchToCsTeam.d.ts +6 -1
  11. package/dist/hooks/conversation/useSwitchToCsTeam.d.ts.map +1 -1
  12. package/dist/hooks/conversation/useSwitchToCsTeam.js +9 -4
  13. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  14. package/dist/hooks/message/useMessage.js +21 -5
  15. package/dist/index.d.ts +5 -6
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +5 -5
  18. package/dist/services/query.d.ts +0 -1
  19. package/dist/services/query.d.ts.map +1 -1
  20. package/dist/services/query.js +0 -1
  21. package/dist/styles/global.css +1 -1
  22. package/dist/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +127 -126
  24. package/dist/assets/svg/cannedResponse.d.ts +0 -7
  25. package/dist/assets/svg/cannedResponse.d.ts.map +0 -1
  26. package/dist/assets/svg/cannedResponse.js +0 -3
  27. package/dist/assets/svg/cannedResponse.tsx +0 -48
  28. package/dist/assets/svg/expand.d.ts +0 -7
  29. package/dist/assets/svg/expand.d.ts.map +0 -1
  30. package/dist/assets/svg/expand.js +0 -2
  31. package/dist/assets/svg/expand.tsx +0 -44
  32. package/dist/components/biz-inbox/BizInboxHeader.d.ts +0 -3
  33. package/dist/components/biz-inbox/BizInboxHeader.d.ts.map +0 -1
  34. package/dist/components/biz-inbox/BizInboxHeader.js +0 -8
  35. package/dist/components/biz-inbox/BizThreadAvatar.d.ts +0 -11
  36. package/dist/components/biz-inbox/BizThreadAvatar.d.ts.map +0 -1
  37. package/dist/components/biz-inbox/BizThreadAvatar.js +0 -12
  38. package/dist/components/biz-inbox/BizThreadCard.d.ts +0 -8
  39. package/dist/components/biz-inbox/BizThreadCard.d.ts.map +0 -1
  40. package/dist/components/biz-inbox/BizThreadCard.js +0 -30
  41. package/dist/components/biz-inbox/BizThreadList.d.ts +0 -12
  42. package/dist/components/biz-inbox/BizThreadList.d.ts.map +0 -1
  43. package/dist/components/biz-inbox/BizThreadList.js +0 -36
  44. package/dist/components/biz-inbox/BizThreadTitle.d.ts +0 -10
  45. package/dist/components/biz-inbox/BizThreadTitle.d.ts.map +0 -1
  46. package/dist/components/biz-inbox/BizThreadTitle.js +0 -10
  47. package/dist/components/biz-inbox/index.d.ts +0 -10
  48. package/dist/components/biz-inbox/index.d.ts.map +0 -1
  49. package/dist/components/biz-inbox/index.js +0 -5
  50. package/dist/components/biz-thread-detail/BizAttachmentPreview.d.ts +0 -9
  51. package/dist/components/biz-thread-detail/BizAttachmentPreview.d.ts.map +0 -1
  52. package/dist/components/biz-thread-detail/BizAttachmentPreview.js +0 -70
  53. package/dist/components/biz-thread-detail/BizImagePreview.d.ts +0 -9
  54. package/dist/components/biz-thread-detail/BizImagePreview.d.ts.map +0 -1
  55. package/dist/components/biz-thread-detail/BizImagePreview.js +0 -39
  56. package/dist/components/biz-thread-detail/BizImageViewer.d.ts +0 -8
  57. package/dist/components/biz-thread-detail/BizImageViewer.d.ts.map +0 -1
  58. package/dist/components/biz-thread-detail/BizImageViewer.js +0 -35
  59. package/dist/components/biz-thread-detail/BizLinkInputPreview.d.ts +0 -7
  60. package/dist/components/biz-thread-detail/BizLinkInputPreview.d.ts.map +0 -1
  61. package/dist/components/biz-thread-detail/BizLinkInputPreview.js +0 -16
  62. package/dist/components/biz-thread-detail/BizLinkMessageCard.d.ts +0 -7
  63. package/dist/components/biz-thread-detail/BizLinkMessageCard.d.ts.map +0 -1
  64. package/dist/components/biz-thread-detail/BizLinkMessageCard.js +0 -17
  65. package/dist/components/biz-thread-detail/BizLinkTextContent.d.ts +0 -6
  66. package/dist/components/biz-thread-detail/BizLinkTextContent.d.ts.map +0 -1
  67. package/dist/components/biz-thread-detail/BizLinkTextContent.js +0 -11
  68. package/dist/components/biz-thread-detail/BizMessageBubble.d.ts +0 -11
  69. package/dist/components/biz-thread-detail/BizMessageBubble.d.ts.map +0 -1
  70. package/dist/components/biz-thread-detail/BizMessageBubble.js +0 -15
  71. package/dist/components/biz-thread-detail/BizMessageContent.d.ts +0 -7
  72. package/dist/components/biz-thread-detail/BizMessageContent.d.ts.map +0 -1
  73. package/dist/components/biz-thread-detail/BizMessageContent.js +0 -125
  74. package/dist/components/biz-thread-detail/BizMessageList.d.ts +0 -7
  75. package/dist/components/biz-thread-detail/BizMessageList.d.ts.map +0 -1
  76. package/dist/components/biz-thread-detail/BizMessageList.js +0 -35
  77. package/dist/components/biz-thread-detail/BizMoreOptionItem.d.ts +0 -8
  78. package/dist/components/biz-thread-detail/BizMoreOptionItem.d.ts.map +0 -1
  79. package/dist/components/biz-thread-detail/BizMoreOptionItem.js +0 -19
  80. package/dist/components/biz-thread-detail/BizMoreOptionPanel.d.ts +0 -10
  81. package/dist/components/biz-thread-detail/BizMoreOptionPanel.d.ts.map +0 -1
  82. package/dist/components/biz-thread-detail/BizMoreOptionPanel.js +0 -20
  83. package/dist/components/biz-thread-detail/BizThreadDetailHeader.d.ts +0 -8
  84. package/dist/components/biz-thread-detail/BizThreadDetailHeader.d.ts.map +0 -1
  85. package/dist/components/biz-thread-detail/BizThreadDetailHeader.js +0 -19
  86. package/dist/components/biz-thread-detail/BizThreadDetailInput.d.ts +0 -8
  87. package/dist/components/biz-thread-detail/BizThreadDetailInput.d.ts.map +0 -1
  88. package/dist/components/biz-thread-detail/BizThreadDetailInput.js +0 -251
  89. package/dist/components/biz-thread-detail/BizVideoViewer.d.ts +0 -8
  90. package/dist/components/biz-thread-detail/BizVideoViewer.d.ts.map +0 -1
  91. package/dist/components/biz-thread-detail/BizVideoViewer.js +0 -103
  92. package/dist/components/biz-thread-detail/bot/BotButtonMessage.d.ts +0 -10
  93. package/dist/components/biz-thread-detail/bot/BotButtonMessage.d.ts.map +0 -1
  94. package/dist/components/biz-thread-detail/bot/BotButtonMessage.js +0 -30
  95. package/dist/components/biz-thread-detail/bot/BotFlowContext.d.ts +0 -10
  96. package/dist/components/biz-thread-detail/bot/BotFlowContext.d.ts.map +0 -1
  97. package/dist/components/biz-thread-detail/bot/BotFlowContext.js +0 -11
  98. package/dist/components/biz-thread-detail/bot/BotStartButton.d.ts +0 -8
  99. package/dist/components/biz-thread-detail/bot/BotStartButton.d.ts.map +0 -1
  100. package/dist/components/biz-thread-detail/bot/BotStartButton.js +0 -11
  101. package/dist/components/biz-thread-detail/bot/index.d.ts +0 -5
  102. package/dist/components/biz-thread-detail/bot/index.d.ts.map +0 -1
  103. package/dist/components/biz-thread-detail/bot/index.js +0 -2
  104. package/dist/components/biz-thread-detail/index.d.ts +0 -10
  105. package/dist/components/biz-thread-detail/index.d.ts.map +0 -1
  106. package/dist/components/biz-thread-detail/index.js +0 -5
  107. package/dist/components/biz-thread-detail/item/BizMessageItem.d.ts +0 -9
  108. package/dist/components/biz-thread-detail/item/BizMessageItem.d.ts.map +0 -1
  109. package/dist/components/biz-thread-detail/item/BizMessageItem.js +0 -27
  110. package/dist/components/bizInbox/BizCommunityTabPlaceholder.d.ts +0 -3
  111. package/dist/components/bizInbox/BizCommunityTabPlaceholder.d.ts.map +0 -1
  112. package/dist/components/bizInbox/BizCommunityTabPlaceholder.js +0 -10
  113. package/dist/components/bizInbox/BizContactListSkeleton.d.ts +0 -6
  114. package/dist/components/bizInbox/BizContactListSkeleton.d.ts.map +0 -1
  115. package/dist/components/bizInbox/BizContactListSkeleton.js +0 -8
  116. package/dist/components/bizInbox/BizCreateGroupButton.d.ts +0 -7
  117. package/dist/components/bizInbox/BizCreateGroupButton.d.ts.map +0 -1
  118. package/dist/components/bizInbox/BizCreateGroupButton.js +0 -11
  119. package/dist/components/bizInbox/BizInboxHeader.d.ts +0 -3
  120. package/dist/components/bizInbox/BizInboxHeader.d.ts.map +0 -1
  121. package/dist/components/bizInbox/BizInboxHeader.js +0 -8
  122. package/dist/components/bizInbox/BizInboxTabs.d.ts +0 -8
  123. package/dist/components/bizInbox/BizInboxTabs.d.ts.map +0 -1
  124. package/dist/components/bizInbox/BizInboxTabs.js +0 -27
  125. package/dist/components/bizInbox/BizSearchInput.d.ts +0 -9
  126. package/dist/components/bizInbox/BizSearchInput.d.ts.map +0 -1
  127. package/dist/components/bizInbox/BizSearchInput.js +0 -24
  128. package/dist/components/bizInbox/BizThreadAvatar.d.ts +0 -10
  129. package/dist/components/bizInbox/BizThreadAvatar.d.ts.map +0 -1
  130. package/dist/components/bizInbox/BizThreadAvatar.js +0 -8
  131. package/dist/components/bizInbox/BizThreadCard.d.ts +0 -8
  132. package/dist/components/bizInbox/BizThreadCard.d.ts.map +0 -1
  133. package/dist/components/bizInbox/BizThreadCard.js +0 -25
  134. package/dist/components/bizInbox/BizThreadList.d.ts +0 -11
  135. package/dist/components/bizInbox/BizThreadList.d.ts.map +0 -1
  136. package/dist/components/bizInbox/BizThreadList.js +0 -35
  137. package/dist/components/bizInbox/BizThreadTitle.d.ts +0 -8
  138. package/dist/components/bizInbox/BizThreadTitle.d.ts.map +0 -1
  139. package/dist/components/bizInbox/BizThreadTitle.js +0 -6
  140. package/dist/components/bizInbox/index.d.ts +0 -10
  141. package/dist/components/bizInbox/index.d.ts.map +0 -1
  142. package/dist/components/bizInbox/index.js +0 -5
  143. package/dist/components/bizInbox/states/BizThreadListEmpty.d.ts +0 -7
  144. package/dist/components/bizInbox/states/BizThreadListEmpty.d.ts.map +0 -1
  145. package/dist/components/bizInbox/states/BizThreadListEmpty.js +0 -15
  146. package/dist/components/bizInbox/states/BizThreadListError.d.ts +0 -6
  147. package/dist/components/bizInbox/states/BizThreadListError.d.ts.map +0 -1
  148. package/dist/components/bizInbox/states/BizThreadListError.js +0 -11
  149. package/dist/components/bizInbox/states/BizThreadListLoading.d.ts +0 -6
  150. package/dist/components/bizInbox/states/BizThreadListLoading.d.ts.map +0 -1
  151. package/dist/components/bizInbox/states/BizThreadListLoading.js +0 -8
  152. package/dist/components/bizThreadDetail/BizMessageBubble.d.ts +0 -10
  153. package/dist/components/bizThreadDetail/BizMessageBubble.d.ts.map +0 -1
  154. package/dist/components/bizThreadDetail/BizMessageBubble.js +0 -15
  155. package/dist/components/bizThreadDetail/BizMessageList.d.ts +0 -3
  156. package/dist/components/bizThreadDetail/BizMessageList.d.ts.map +0 -1
  157. package/dist/components/bizThreadDetail/BizMessageList.js +0 -28
  158. package/dist/components/bizThreadDetail/BizThreadDetailHeader.d.ts +0 -8
  159. package/dist/components/bizThreadDetail/BizThreadDetailHeader.d.ts.map +0 -1
  160. package/dist/components/bizThreadDetail/BizThreadDetailHeader.js +0 -18
  161. package/dist/components/bizThreadDetail/BizThreadDetailInput.d.ts +0 -8
  162. package/dist/components/bizThreadDetail/BizThreadDetailInput.d.ts.map +0 -1
  163. package/dist/components/bizThreadDetail/BizThreadDetailInput.js +0 -147
  164. package/dist/components/bizThreadDetail/index.d.ts +0 -8
  165. package/dist/components/bizThreadDetail/index.d.ts.map +0 -1
  166. package/dist/components/bizThreadDetail/index.js +0 -4
  167. package/dist/components/bizThreadDetail/item/BizMessageItem.d.ts +0 -8
  168. package/dist/components/bizThreadDetail/item/BizMessageItem.d.ts.map +0 -1
  169. package/dist/components/bizThreadDetail/item/BizMessageItem.js +0 -20
  170. package/dist/components/cannedResponse/CannedResponseBody.d.ts +0 -8
  171. package/dist/components/cannedResponse/CannedResponseBody.d.ts.map +0 -1
  172. package/dist/components/cannedResponse/CannedResponseBody.js +0 -109
  173. package/dist/components/cannedResponse/CannedResponseFooter.d.ts +0 -6
  174. package/dist/components/cannedResponse/CannedResponseFooter.d.ts.map +0 -1
  175. package/dist/components/cannedResponse/CannedResponseFooter.js +0 -8
  176. package/dist/components/cannedResponse/CannedResponseHeader.d.ts +0 -8
  177. package/dist/components/cannedResponse/CannedResponseHeader.d.ts.map +0 -1
  178. package/dist/components/cannedResponse/CannedResponseHeader.js +0 -11
  179. package/dist/components/cannedResponse/index.d.ts +0 -8
  180. package/dist/components/cannedResponse/index.d.ts.map +0 -1
  181. package/dist/components/cannedResponse/index.js +0 -34
  182. package/dist/components/cannedResponse/team/TeamItem.d.ts +0 -11
  183. package/dist/components/cannedResponse/team/TeamItem.d.ts.map +0 -1
  184. package/dist/components/cannedResponse/team/TeamItem.js +0 -31
  185. package/dist/components/chatBubble/ChatBubble.d.ts +0 -6
  186. package/dist/components/chatBubble/ChatBubble.d.ts.map +0 -1
  187. package/dist/components/chatBubble/ChatBubble.js +0 -35
  188. package/dist/components/mediaCollection/FileCollection.d.ts +0 -3
  189. package/dist/components/mediaCollection/FileCollection.d.ts.map +0 -1
  190. package/dist/components/mediaCollection/FileCollection.js +0 -53
  191. package/dist/components/mediaCollection/ImageCollection.d.ts +0 -3
  192. package/dist/components/mediaCollection/ImageCollection.d.ts.map +0 -1
  193. package/dist/components/mediaCollection/ImageCollection.js +0 -52
  194. package/dist/components/mediaCollection/LinkCollection.d.ts +0 -5
  195. package/dist/components/mediaCollection/LinkCollection.d.ts.map +0 -1
  196. package/dist/components/mediaCollection/LinkCollection.js +0 -92
  197. package/dist/components/mediaCollection/VideoCollection.d.ts +0 -3
  198. package/dist/components/mediaCollection/VideoCollection.d.ts.map +0 -1
  199. package/dist/components/mediaCollection/VideoCollection.js +0 -51
  200. package/dist/components/mediaCollection/index.d.ts +0 -9
  201. package/dist/components/mediaCollection/index.d.ts.map +0 -1
  202. package/dist/components/mediaCollection/index.js +0 -57
  203. package/dist/components/message/footer/QuotedMessage.d.ts +0 -2
  204. package/dist/components/message/footer/QuotedMessage.d.ts.map +0 -1
  205. package/dist/components/message/footer/QuotedMessage.js +0 -24
  206. package/dist/components/richTextEditor/RichTextEditor.d.ts +0 -12
  207. package/dist/components/richTextEditor/RichTextEditor.d.ts.map +0 -1
  208. package/dist/components/richTextEditor/RichTextEditor.js +0 -62
  209. package/dist/components/searchConversation/SearchAll.d.ts +0 -8
  210. package/dist/components/searchConversation/SearchAll.d.ts.map +0 -1
  211. package/dist/components/searchConversation/SearchAll.js +0 -37
  212. package/dist/components/searchConversation/SearchConversationAsMessages.d.ts +0 -6
  213. package/dist/components/searchConversation/SearchConversationAsMessages.d.ts.map +0 -1
  214. package/dist/components/searchConversation/SearchConversationAsMessages.js +0 -23
  215. package/dist/components/searchConversation/SearchConversationAsUsers.d.ts +0 -6
  216. package/dist/components/searchConversation/SearchConversationAsUsers.d.ts.map +0 -1
  217. package/dist/components/searchConversation/SearchConversationAsUsers.js +0 -21
  218. package/dist/components/searchConversation/SearchConversationMyInbox.d.ts +0 -6
  219. package/dist/components/searchConversation/SearchConversationMyInbox.d.ts.map +0 -1
  220. package/dist/components/searchConversation/SearchConversationMyInbox.js +0 -24
  221. package/dist/components/searchConversation/SearchDrawer.d.ts +0 -3
  222. package/dist/components/searchConversation/SearchDrawer.d.ts.map +0 -1
  223. package/dist/components/searchConversation/SearchDrawer.js +0 -33
  224. package/dist/components/searchConversation/SearchMessageOnCurrentConversation.d.ts +0 -7
  225. package/dist/components/searchConversation/SearchMessageOnCurrentConversation.d.ts.map +0 -1
  226. package/dist/components/searchConversation/SearchMessageOnCurrentConversation.js +0 -28
  227. package/dist/components/searchConversation/index.d.ts +0 -12
  228. package/dist/components/searchConversation/index.d.ts.map +0 -1
  229. package/dist/components/searchConversation/index.js +0 -46
  230. package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts +0 -12
  231. package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts.map +0 -1
  232. package/dist/components/searchConversation/item/SearchItemAsMessage.js +0 -72
  233. package/dist/components/searchConversation/item/SearchItemAsUser.d.ts +0 -8
  234. package/dist/components/searchConversation/item/SearchItemAsUser.d.ts.map +0 -1
  235. package/dist/components/searchConversation/item/SearchItemAsUser.js +0 -25
  236. package/dist/constants/bizInbox.d.ts +0 -37
  237. package/dist/constants/bizInbox.d.ts.map +0 -1
  238. package/dist/constants/bizInbox.js +0 -35
  239. package/dist/constants/bizMoreOption.d.ts +0 -9
  240. package/dist/constants/bizMoreOption.d.ts.map +0 -1
  241. package/dist/constants/bizMoreOption.js +0 -37
  242. package/dist/hooks/biz/index.d.ts +0 -8
  243. package/dist/hooks/biz/index.d.ts.map +0 -1
  244. package/dist/hooks/biz/index.js +0 -5
  245. package/dist/hooks/biz/useBizActiveConversation.d.ts +0 -3
  246. package/dist/hooks/biz/useBizActiveConversation.d.ts.map +0 -1
  247. package/dist/hooks/biz/useBizActiveConversation.js +0 -38
  248. package/dist/hooks/biz/useBizConversationList.d.ts +0 -15
  249. package/dist/hooks/biz/useBizConversationList.d.ts.map +0 -1
  250. package/dist/hooks/biz/useBizConversationList.js +0 -48
  251. package/dist/hooks/biz/useBizConversationListItems.d.ts +0 -8
  252. package/dist/hooks/biz/useBizConversationListItems.d.ts.map +0 -1
  253. package/dist/hooks/biz/useBizConversationListItems.js +0 -14
  254. package/dist/hooks/biz/useBizGlobalEvent.d.ts +0 -2
  255. package/dist/hooks/biz/useBizGlobalEvent.d.ts.map +0 -1
  256. package/dist/hooks/biz/useBizGlobalEvent.js +0 -72
  257. package/dist/hooks/biz/useBizSendMessage.d.ts +0 -4
  258. package/dist/hooks/biz/useBizSendMessage.d.ts.map +0 -1
  259. package/dist/hooks/biz/useBizSendMessage.js +0 -70
  260. package/dist/hooks/biz/useBotFlow.d.ts +0 -17
  261. package/dist/hooks/biz/useBotFlow.d.ts.map +0 -1
  262. package/dist/hooks/biz/useBotFlow.js +0 -127
  263. package/dist/hooks/biz/useConversationDetail.d.ts +0 -3
  264. package/dist/hooks/biz/useConversationDetail.d.ts.map +0 -1
  265. package/dist/hooks/biz/useConversationDetail.js +0 -18
  266. package/dist/hooks/biz/useCreateBizConversation.d.ts +0 -8
  267. package/dist/hooks/biz/useCreateBizConversation.d.ts.map +0 -1
  268. package/dist/hooks/biz/useCreateBizConversation.js +0 -15
  269. package/dist/hooks/biz/useResetBotFlow.d.ts +0 -3
  270. package/dist/hooks/biz/useResetBotFlow.d.ts.map +0 -1
  271. package/dist/hooks/biz/useResetBotFlow.js +0 -14
  272. package/dist/hooks/biz/useRunBotFlow.d.ts +0 -7
  273. package/dist/hooks/biz/useRunBotFlow.d.ts.map +0 -1
  274. package/dist/hooks/biz/useRunBotFlow.js +0 -14
  275. package/dist/hooks/cannedResponse/useFetchCannedCategories.d.ts +0 -3
  276. package/dist/hooks/cannedResponse/useFetchCannedCategories.d.ts.map +0 -1
  277. package/dist/hooks/cannedResponse/useFetchCannedCategories.js +0 -13
  278. package/dist/hooks/cannedResponse/useFetchCannedResponse.d.ts +0 -219
  279. package/dist/hooks/cannedResponse/useFetchCannedResponse.d.ts.map +0 -1
  280. package/dist/hooks/cannedResponse/useFetchCannedResponse.js +0 -55
  281. package/dist/hooks/common/useFetchExternalLink.d.ts +0 -2
  282. package/dist/hooks/common/useFetchExternalLink.d.ts.map +0 -1
  283. package/dist/hooks/common/useFetchExternalLink.js +0 -18
  284. package/dist/hooks/common/useIsSdkMessageReady.d.ts +0 -2
  285. package/dist/hooks/common/useIsSdkMessageReady.d.ts.map +0 -1
  286. package/dist/hooks/common/useIsSdkMessageReady.js +0 -7
  287. package/dist/hooks/conversation/useConversationPreview.d.ts +0 -12
  288. package/dist/hooks/conversation/useConversationPreview.d.ts.map +0 -1
  289. package/dist/hooks/conversation/useConversationPreview.js +0 -22
  290. package/dist/hooks/message/useSendCustomMessage.d.ts +0 -7
  291. package/dist/hooks/message/useSendCustomMessage.d.ts.map +0 -1
  292. package/dist/hooks/message/useSendCustomMessage.js +0 -5
  293. package/dist/locales/en/bizInbox.json +0 -41
  294. package/dist/locales/vi/biz-inbox.json +0 -39
  295. package/dist/locales/vi/bizInbox.json +0 -19
  296. package/dist/screens/biz-message/index.d.ts +0 -8
  297. package/dist/screens/biz-message/index.d.ts.map +0 -1
  298. package/dist/screens/biz-message/index.js +0 -30
  299. package/dist/screens/biz-thread-detail/index.d.ts +0 -9
  300. package/dist/screens/biz-thread-detail/index.d.ts.map +0 -1
  301. package/dist/screens/biz-thread-detail/index.js +0 -50
  302. package/dist/screens/bizMessage/index.d.ts +0 -9
  303. package/dist/screens/bizMessage/index.d.ts.map +0 -1
  304. package/dist/screens/bizMessage/index.js +0 -55
  305. package/dist/screens/bizThreadDetail/index.d.ts +0 -9
  306. package/dist/screens/bizThreadDetail/index.d.ts.map +0 -1
  307. package/dist/screens/bizThreadDetail/index.js +0 -36
  308. package/dist/screens/chatBubble/index.d.ts +0 -7
  309. package/dist/screens/chatBubble/index.d.ts.map +0 -1
  310. package/dist/screens/chatBubble/index.js +0 -41
  311. package/dist/screens/deskMessage/index.d.ts +0 -6
  312. package/dist/screens/deskMessage/index.d.ts.map +0 -1
  313. package/dist/screens/deskMessage/index.js +0 -17
  314. package/dist/services/biz/conversationService.d.ts +0 -3
  315. package/dist/services/biz/conversationService.d.ts.map +0 -1
  316. package/dist/services/biz/conversationService.js +0 -10
  317. package/dist/store/bizConversation.d.ts +0 -18
  318. package/dist/store/bizConversation.d.ts.map +0 -1
  319. package/dist/store/bizConversation.js +0 -35
  320. package/dist/store/bizMessageDraft.d.ts +0 -9
  321. package/dist/store/bizMessageDraft.d.ts.map +0 -1
  322. package/dist/store/bizMessageDraft.js +0 -35
  323. package/dist/store/pinnedMessage.d.ts +0 -4
  324. package/dist/store/pinnedMessage.d.ts.map +0 -1
  325. package/dist/store/pinnedMessage.js +0 -17
  326. package/dist/types/biz.d.ts +0 -128
  327. package/dist/types/biz.d.ts.map +0 -1
  328. package/dist/types/biz.js +0 -34
  329. package/dist/utils/bizConversation.d.ts +0 -15
  330. package/dist/utils/bizConversation.d.ts.map +0 -1
  331. package/dist/utils/bizConversation.js +0 -96
  332. package/dist/utils/bizLink.d.ts +0 -13
  333. package/dist/utils/bizLink.d.ts.map +0 -1
  334. package/dist/utils/bizLink.js +0 -77
  335. package/dist/utils/bizMessage.d.ts +0 -15
  336. package/dist/utils/bizMessage.d.ts.map +0 -1
  337. package/dist/utils/bizMessage.js +0 -93
  338. package/dist/utils/messageEx.d.ts +0 -5
  339. package/dist/utils/messageEx.d.ts.map +0 -1
  340. package/dist/utils/messageEx.js +0 -11
  341. package/dist/utils/openBizLink.d.ts +0 -3
  342. package/dist/utils/openBizLink.d.ts.map +0 -1
  343. package/dist/utils/openBizLink.js +0 -19
@@ -1,147 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useCallback, useEffect, useRef, useState } from "react";
4
- import { useTranslation } from "react-i18next";
5
- import clsx from "clsx";
6
- import { Icon } from "../../components/icon";
7
- import { useBizSendMessage } from "../../hooks/biz/useBizSendMessage";
8
- import useBizConversationStore from "../../store/bizConversation";
9
- import useBizMessageDraftStore from "../../store/bizMessageDraft";
10
- import { emit } from "../../utils/events";
11
- const MAX_LINES = 5;
12
- const CONTAINER_MIN_HEIGHT = 48;
13
- const BizThreadDetailInput = ({ placeholder, onSendMessage, onInputChange, }) => {
14
- const { t } = useTranslation("biz-inbox");
15
- const { sendTextMessage } = useBizSendMessage();
16
- const conversationId = useBizConversationStore((state) => { var _a; return (_a = state.conversationData) === null || _a === void 0 ? void 0 : _a.conversationId; });
17
- const setDraft = useBizMessageDraftStore((state) => state.setDraft);
18
- const clearDraft = useBizMessageDraftStore((state) => state.clearDraft);
19
- const containerRef = useRef(null);
20
- const textareaRef = useRef(null);
21
- const [value, setValue] = useState("");
22
- const [isFocused, setIsFocused] = useState(false);
23
- const [isSending, setIsSending] = useState(false);
24
- const canSend = value.trim().length > 0 && !isSending;
25
- const getTextareaHeights = useCallback(() => {
26
- const textarea = textareaRef.current;
27
- if (!textarea)
28
- return null;
29
- const lineHeight = parseFloat(window.getComputedStyle(textarea).lineHeight);
30
- return {
31
- lineHeight,
32
- maxHeight: lineHeight * MAX_LINES,
33
- };
34
- }, []);
35
- const adjustTextareaHeight = useCallback(() => {
36
- const textarea = textareaRef.current;
37
- const heights = getTextareaHeights();
38
- if (!textarea || !heights)
39
- return;
40
- textarea.style.height = `${heights.lineHeight}px`;
41
- const scrollHeight = textarea.scrollHeight;
42
- const nextHeight = Math.min(Math.max(scrollHeight, heights.lineHeight), heights.maxHeight);
43
- textarea.style.height = `${nextHeight}px`;
44
- textarea.style.overflowY =
45
- scrollHeight > heights.maxHeight ? "auto" : "hidden";
46
- }, [getTextareaHeights]);
47
- useEffect(() => {
48
- var _a;
49
- if (!conversationId) {
50
- setValue("");
51
- return;
52
- }
53
- const draft = (_a = useBizMessageDraftStore.getState().drafts[conversationId]) !== null && _a !== void 0 ? _a : "";
54
- setValue(draft);
55
- requestAnimationFrame(adjustTextareaHeight);
56
- }, [conversationId, adjustTextareaHeight]);
57
- useEffect(() => {
58
- adjustTextareaHeight();
59
- }, [value, adjustTextareaHeight]);
60
- useEffect(() => {
61
- if (!isFocused)
62
- return;
63
- const handlePointerDown = (event) => {
64
- var _a, _b;
65
- if ((_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))
66
- return;
67
- (_b = textareaRef.current) === null || _b === void 0 ? void 0 : _b.blur();
68
- };
69
- document.addEventListener("pointerdown", handlePointerDown);
70
- return () => document.removeEventListener("pointerdown", handlePointerDown);
71
- }, [isFocused]);
72
- useEffect(() => {
73
- const viewport = window.visualViewport;
74
- if (!viewport)
75
- return;
76
- const handleViewportChange = () => {
77
- if (document.activeElement === textareaRef.current) {
78
- emit("BIZ_CHAT_SCROLL_TO_BOTTOM_IF_AT_BOTTOM");
79
- }
80
- };
81
- viewport.addEventListener("resize", handleViewportChange);
82
- return () => viewport.removeEventListener("resize", handleViewportChange);
83
- }, []);
84
- const handleChange = (nextValue) => {
85
- setValue(nextValue);
86
- if (conversationId) {
87
- setDraft(conversationId, nextValue);
88
- }
89
- onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(nextValue);
90
- };
91
- const handleSend = async () => {
92
- const text = value.trim();
93
- if (!text || isSending)
94
- return;
95
- setIsSending(true);
96
- try {
97
- if (onSendMessage) {
98
- onSendMessage(text);
99
- }
100
- else {
101
- const sent = await sendTextMessage(text);
102
- if (!sent)
103
- return;
104
- }
105
- setValue("");
106
- if (conversationId) {
107
- clearDraft(conversationId);
108
- }
109
- requestAnimationFrame(adjustTextareaHeight);
110
- }
111
- finally {
112
- setIsSending(false);
113
- }
114
- };
115
- const handleFocus = () => {
116
- setIsFocused(true);
117
- emit("BIZ_CHAT_SCROLL_TO_BOTTOM_IF_AT_BOTTOM");
118
- };
119
- const handleBlur = () => {
120
- setIsFocused(false);
121
- };
122
- const insertNewline = (textarea) => {
123
- const { selectionStart, selectionEnd } = textarea;
124
- const nextValue = value.slice(0, selectionStart) + "\n" + value.slice(selectionEnd);
125
- handleChange(nextValue);
126
- requestAnimationFrame(() => {
127
- textarea.selectionStart = selectionStart + 1;
128
- textarea.selectionEnd = selectionStart + 1;
129
- adjustTextareaHeight();
130
- });
131
- };
132
- const handleKeyDown = (event) => {
133
- if (event.key !== "Enter")
134
- return;
135
- if (event.shiftKey) {
136
- event.preventDefault();
137
- insertNewline(event.currentTarget);
138
- return;
139
- }
140
- event.preventDefault();
141
- void handleSend();
142
- };
143
- return (_jsx("div", { ref: containerRef, "data-testid": "biz-thread-detail-input", className: "flex w-full shrink-0 flex-col bg-[rgba(131,137,157,0.05)]", children: _jsxs("div", { className: "flex items-end gap-3 px-3 py-2", children: [_jsx("div", { className: clsx("flex min-w-0 flex-1 overflow-hidden rounded-xl border bg-white transition-shadow", isFocused
144
- ? "border-[#607CFB] shadow-[0px_0px_2px_rgba(27,63,228,0.5)]"
145
- : "border-[#DDDEDF]"), style: { minHeight: CONTAINER_MIN_HEIGHT }, children: _jsx("div", { className: "flex min-w-0 flex-[1_0_0] items-center gap-2 self-stretch px-3 py-1", children: _jsx("textarea", { ref: textareaRef, value: value, rows: 1, onChange: (event) => handleChange(event.target.value), onFocus: handleFocus, onBlur: handleBlur, onKeyDown: handleKeyDown, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t("thread_detail.input_placeholder"), "data-testid": "biz-thread-detail-message-input", className: "biz-message-input-scrollbar min-h-0 min-w-0 flex-1 resize-none bg-transparent text-[16px] leading-[1.6] tracking-[0.16px] text-black outline-none placeholder:text-[#747B7E]" }) }) }), _jsx("div", { className: "flex shrink-0 items-center pb-1", children: _jsx("button", { type: "button", onClick: () => void handleSend(), disabled: !canSend, "data-testid": "biz-thread-detail-send", className: clsx("flex h-10 w-10 items-center justify-center rounded-full", canSend ? "bg-[#002BEB]" : "bg-[#002BEB] opacity-25"), children: _jsx(Icon, { icon: "send-b", size: 20, className: "text-white" }) }) })] }) }));
146
- };
147
- export default BizThreadDetailInput;
@@ -1,8 +0,0 @@
1
- export { default as BizThreadDetailHeader } from "./BizThreadDetailHeader";
2
- export type { BizThreadDetailHeaderProps } from "./BizThreadDetailHeader";
3
- export { default as BizThreadDetailInput } from "./BizThreadDetailInput";
4
- export type { BizThreadDetailInputProps } from "./BizThreadDetailInput";
5
- export { default as BizMessageList } from "./BizMessageList";
6
- export { default as BizMessageItem } from "./item/BizMessageItem";
7
- export type { BizMessageItemProps } from "./item/BizMessageItem";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/bizThreadDetail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,4 +0,0 @@
1
- export { default as BizThreadDetailHeader } from "./BizThreadDetailHeader";
2
- export { default as BizThreadDetailInput } from "./BizThreadDetailInput";
3
- export { default as BizMessageList } from "./BizMessageList";
4
- export { default as BizMessageItem } from "./item/BizMessageItem";
@@ -1,8 +0,0 @@
1
- import { MessageItem } from "@openim/wasm-client-sdk";
2
- export interface BizMessageItemProps {
3
- message: MessageItem;
4
- allMessages: MessageItem[];
5
- }
6
- declare const BizMessageItem: ({ message, allMessages }: BizMessageItemProps) => import("react/jsx-runtime").JSX.Element | null;
7
- export default BizMessageItem;
8
- //# sourceMappingURL=BizMessageItem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BizMessageItem.d.ts","sourceRoot":"","sources":["../../../../src/components/bizThreadDetail/item/BizMessageItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQtD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,WAAW,EAAE,CAAC;CAC5B;AA4BD,QAAA,MAAM,cAAc,GAAI,0BAA0B,mBAAmB,mDA6CpE,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,20 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Icon } from "../../../components/icon";
4
- import useAuthStore from "../../../store/auth";
5
- import { formatTimestamp } from "../../../utils/common";
6
- import { getBizMessageDisplay } from "../../../utils/bizMessage";
7
- import BizMessageBubble from "../BizMessageBubble";
8
- const BizMessageAvatar = ({ avatarUrl }) => (_jsx("div", { className: "flex shrink-0 items-center pb-4", children: avatarUrl ? (_jsx("img", { src: avatarUrl, alt: "", className: "h-6 w-6 rounded-full object-cover" })) : (_jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-[#0C5CFF]", children: _jsx(Icon, { icon: "droppii-o-1", size: 14, className: "text-white" }) })) }));
9
- const BizMessageTime = ({ sendTime }) => (_jsx("div", { className: "flex w-full items-center px-4 py-1", children: _jsx("div", { className: "flex min-w-0 flex-1 flex-col items-start", children: _jsx("p", { className: "w-full break-words text-center text-[12px] font-normal leading-[160%] tracking-normal text-[#747B7E]", children: formatTimestamp(sendTime, { hasTime: true }) }) }) }));
10
- const BizMessageItem = ({ message, allMessages }) => {
11
- const userID = useAuthStore((state) => state.userID);
12
- if (!userID)
13
- return null;
14
- const display = getBizMessageDisplay(message, allMessages, userID);
15
- if (!display.isMine) {
16
- return (_jsxs("div", { className: "flex w-full flex-col pb-1", "data-testid": "biz-message-item", children: [display.showTimeBreak && _jsx(BizMessageTime, { sendTime: display.sendTime }), _jsxs("div", { className: "flex w-full items-end pl-3 pr-12", children: [display.showAvatar ? (_jsx(BizMessageAvatar, { avatarUrl: display.senderFaceUrl })) : (_jsx("div", { className: "w-6 shrink-0" })), _jsx("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: _jsx(BizMessageBubble, { isMine: display.isMine, content: display.content, senderName: display.senderName, showSenderName: display.showSenderName, showTip: display.showTip }) })] })] }));
17
- }
18
- return (_jsxs("div", { className: "flex w-full flex-col pb-1", "data-testid": "biz-message-item", children: [display.showTimeBreak && _jsx(BizMessageTime, { sendTime: display.sendTime }), _jsx("div", { className: "flex w-full justify-end pl-12 pr-3", children: _jsx("div", { className: "flex min-w-0 max-w-[calc(100%-48px)] flex-col items-end gap-1", children: _jsx(BizMessageBubble, { isMine: display.isMine, content: display.content, showTip: display.showTip }) }) })] }));
19
- };
20
- export default BizMessageItem;
@@ -1,8 +0,0 @@
1
- interface ICannedResponseBodyProps {
2
- search?: string;
3
- onSelectCannedResponse?: (content: string) => void;
4
- cannedQuery?: string;
5
- }
6
- declare const CannedResponseBody: (props: ICannedResponseBodyProps) => import("react/jsx-runtime").JSX.Element;
7
- export default CannedResponseBody;
8
- //# sourceMappingURL=CannedResponseBody.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CannedResponseBody.d.ts","sourceRoot":"","sources":["../../../src/components/cannedResponse/CannedResponseBody.tsx"],"names":[],"mappings":"AAiBA,UAAU,wBAAwB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD,QAAA,MAAM,kBAAkB,GAAI,OAAO,wBAAwB,4CA8M1D,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,109 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Empty, Segmented, Spin } from "antd";
3
- import { useFetchMyTeams } from "../../hooks/team/useFetchMyTeam";
4
- import { useTranslation } from "react-i18next";
5
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
6
- import { CannedResponseVisibleScope } from "../../types/chat";
7
- import TeamItem from "./team/TeamItem";
8
- import { useFetchCannedResponse } from "../../hooks/cannedResponse/useFetchCannedResponse";
9
- import InfiniteScroll from "react-infinite-scroll-component";
10
- import { Icon } from "../../components/icon";
11
- import { sanitizeHtml } from "../../utils/common";
12
- import { useDebounce } from "ahooks";
13
- import clsx from "clsx";
14
- import emitter from "../../utils/events";
15
- import { isArray } from "lodash";
16
- import { useMessageFooterContext } from "../../components/message/footer";
17
- const parseIndex = (index, length) => {
18
- if (index === null)
19
- return null;
20
- if (index < 0)
21
- return 0;
22
- if (index >= length)
23
- return length - 1;
24
- return index;
25
- };
26
- const CannedResponseBody = (props) => {
27
- var _a, _b;
28
- const { search, onSelectCannedResponse, cannedQuery } = props;
29
- const { activeCannedIndex, setActiveCannedIndex, setMaxActiveCannedIndex } = useMessageFooterContext();
30
- const itemRefs = useRef([]);
31
- const { t } = useTranslation();
32
- const { data: myTeams, isLoading: isLoadingTeams } = useFetchMyTeams();
33
- const [scope, setScope] = useState(CannedResponseVisibleScope.TEAM);
34
- const [selectedTeamId, setSelectedTeamId] = useState(undefined);
35
- const [selectedCategoryId, setSelectedCategoryId] = useState(undefined);
36
- const cannedQueryDebounced = useDebounce(cannedQuery, { wait: 300 });
37
- const { dataFlatten: cannedResponses, fetchNextPage, hasNextPage, } = useFetchCannedResponse({
38
- visibilityScope: scope,
39
- teamId: selectedTeamId,
40
- categoryId: selectedCategoryId,
41
- shortcut: search || cannedQueryDebounced || "",
42
- });
43
- const validActiveCannedIndex = useMemo(() => {
44
- return parseIndex(activeCannedIndex, (cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.length) || 0);
45
- }, [activeCannedIndex, cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.length]);
46
- const options = useMemo(() => {
47
- return [
48
- { label: t("team"), value: CannedResponseVisibleScope.TEAM },
49
- { label: t("personal"), value: CannedResponseVisibleScope.PRIVATE },
50
- ];
51
- }, [t]);
52
- const onSelectCategory = useCallback((teamId, categoryId) => {
53
- setSelectedTeamId(teamId);
54
- setSelectedCategoryId(categoryId);
55
- }, []);
56
- const renderTeamItem = useCallback((team, index) => {
57
- return (_jsx(TeamItem, { team: team, onSelectCategory: onSelectCategory, selectedTeamId: selectedTeamId, selectedCategoryId: selectedCategoryId, defaultOpen: index === 0 }, team === null || team === void 0 ? void 0 : team.teamId));
58
- }, [onSelectCategory, selectedTeamId, selectedCategoryId]);
59
- useEffect(() => {
60
- if (!isLoadingTeams && myTeams && myTeams.length > 0) {
61
- setSelectedTeamId(myTeams[0].teamId);
62
- }
63
- }, [isLoadingTeams, myTeams]);
64
- useEffect(() => {
65
- const handler = (index) => {
66
- var _a;
67
- const validIndex = parseIndex(index, cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.length);
68
- if (validIndex !== null && !!(cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses[validIndex])) {
69
- const htmlContent = ((_a = cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses[validIndex]) === null || _a === void 0 ? void 0 : _a.content) || "";
70
- // 🔒 Sanitize HTML to prevent XSS attacks
71
- const sanitizedContent = sanitizeHtml(htmlContent);
72
- onSelectCannedResponse === null || onSelectCannedResponse === void 0 ? void 0 : onSelectCannedResponse(sanitizedContent);
73
- }
74
- };
75
- emitter.on("CANNED_RESPONSE_SELECT", handler);
76
- return () => {
77
- emitter.off("CANNED_RESPONSE_SELECT", handler);
78
- };
79
- }, [cannedResponses, onSelectCannedResponse]);
80
- useEffect(() => {
81
- setActiveCannedIndex(0);
82
- }, [search, cannedQueryDebounced, setActiveCannedIndex]);
83
- useEffect(() => {
84
- var _a, _b;
85
- if (activeCannedIndex !== null) {
86
- (_b = (_a = itemRefs.current) === null || _a === void 0 ? void 0 : _a[activeCannedIndex]) === null || _b === void 0 ? void 0 : _b.scrollIntoView({
87
- block: "nearest",
88
- });
89
- }
90
- }, [activeCannedIndex]);
91
- useEffect(() => {
92
- setMaxActiveCannedIndex((cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.length) - 1 > 0 ? (cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.length) - 1 : 0);
93
- }, [cannedResponses, setMaxActiveCannedIndex]);
94
- return (_jsxs("div", { className: "flex flex-1 flex-row h-[400px]", children: [_jsxs("div", { className: "w-[170px] p-2 border-r border-gray-200", children: [_jsx(Segmented, { options: options, block: true, size: "small", value: scope, onChange: setScope }), _jsx("div", { className: "overflow-y-auto h-full", children: scope === CannedResponseVisibleScope.TEAM && (_jsx("div", { className: "mt-1 flex flex-col", children: (_a = myTeams === null || myTeams === void 0 ? void 0 : myTeams.map) === null || _a === void 0 ? void 0 : _a.call(myTeams, (team, index) => renderTeamItem(team, index)) })) })] }), _jsxs("div", { id: "scrollableCannedDiv", className: "flex flex-col flex-1 h-full overflow-y-auto", children: [!!cannedQuery && !search && (_jsx("div", { className: "px-3 py-2 border-b border-gray-200", children: _jsxs("span", { className: "text-sm text-gray-500", children: [t("canned_response_quick_search_placeholder"), _jsx("span", { className: "text-blue-600", children: ` #${cannedQuery}` })] }) })), _jsx(InfiniteScroll, { dataLength: (cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.length) || 0, next: fetchNextPage, hasMore: hasNextPage, loader: _jsx("div", { className: "flex items-center justify-center py-2", children: _jsx(Spin, {}) }), scrollableTarget: "scrollableCannedDiv", children: !isArray(cannedResponses) || (cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.length) === 0 ? (_jsx("div", { className: "flex items-center justify-center py-12", children: _jsx(Empty, { image: _jsx(Icon, { icon: "chat-square-b", size: 80, className: "text-gray-300" }), description: t("no_canned_response") }) })) : ((_b = cannedResponses === null || cannedResponses === void 0 ? void 0 : cannedResponses.map) === null || _b === void 0 ? void 0 : _b.call(cannedResponses, (canned, index) => {
95
- var _a, _b;
96
- const isActive = index === validActiveCannedIndex;
97
- const htmlContent = (canned === null || canned === void 0 ? void 0 : canned.content) || "";
98
- // 🔒 Sanitize HTML to prevent XSS attacks
99
- const sanitizedContent = sanitizeHtml(htmlContent);
100
- return (_jsxs("div", { ref: (el) => {
101
- itemRefs.current[index] = el;
102
- }, className: clsx("flex flex-col flex-1 px-3 py-2 cursor-pointer hover:bg-blue-100 w-full border-b border-gray-200", isActive && "bg-blue-100"), onClick: () => onSelectCannedResponse === null || onSelectCannedResponse === void 0 ? void 0 : onSelectCannedResponse(sanitizedContent), children: [_jsxs("span", { className: "text-xs truncate text-gray-500", children: [`${((_a = canned === null || canned === void 0 ? void 0 : canned.category) === null || _a === void 0 ? void 0 : _a.name)
103
- ? `${(_b = canned === null || canned === void 0 ? void 0 : canned.category) === null || _b === void 0 ? void 0 : _b.name} / `
104
- : ""}`, _jsx("span", { className: "text-black", children: `${(canned === null || canned === void 0 ? void 0 : canned.name) || ""} ` }), _jsx("span", { children: "/" }), _jsx("span", { className: "text-blue-500", children: ` #${(canned === null || canned === void 0 ? void 0 : canned.shortcut) || ""}` })] }), _jsx("div", { dangerouslySetInnerHTML: {
105
- __html: sanitizedContent,
106
- }, className: "text-sm mt-1" })] }, canned === null || canned === void 0 ? void 0 : canned.id));
107
- })) })] })] }));
108
- };
109
- export default CannedResponseBody;
@@ -1,6 +0,0 @@
1
- interface ICannedResponseFooterProps {
2
- openCreateCannedModal?: () => void;
3
- }
4
- declare const CannedResponseFooter: ({ openCreateCannedModal, }: ICannedResponseFooterProps) => import("react/jsx-runtime").JSX.Element;
5
- export default CannedResponseFooter;
6
- //# sourceMappingURL=CannedResponseFooter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CannedResponseFooter.d.ts","sourceRoot":"","sources":["../../../src/components/cannedResponse/CannedResponseFooter.tsx"],"names":[],"mappings":"AAGA,UAAU,0BAA0B;IAClC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC;AAED,QAAA,MAAM,oBAAoB,GAAI,4BAE3B,0BAA0B,4CAgB5B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useTranslation } from "react-i18next";
3
- import { Icon } from "../../components/icon";
4
- const CannedResponseFooter = ({ openCreateCannedModal, }) => {
5
- const { t } = useTranslation();
6
- return (_jsx("div", { className: "flex items-center justify-end border-t border-gray-200 p-2", children: _jsxs("div", { className: "flex cursor-pointer items-center gap-1", onClick: openCreateCannedModal, children: [_jsx(Icon, { icon: "plus-circle-o", size: 16, className: "text-blue-500" }), _jsx("span", { className: "text-sm text-blue-500", children: t("add_canned_response") })] }) }));
7
- };
8
- export default CannedResponseFooter;
@@ -1,8 +0,0 @@
1
- interface ICannedResponseHeaderProps {
2
- onClose?: () => void;
3
- search?: string;
4
- setSearch?: (search: string) => void;
5
- }
6
- declare const CannedResponseHeader: (props: ICannedResponseHeaderProps) => import("react/jsx-runtime").JSX.Element;
7
- export default CannedResponseHeader;
8
- //# sourceMappingURL=CannedResponseHeader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CannedResponseHeader.d.ts","sourceRoot":"","sources":["../../../src/components/cannedResponse/CannedResponseHeader.tsx"],"names":[],"mappings":"AAKA,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,QAAA,MAAM,oBAAoB,GAAI,OAAO,0BAA0B,4CA+B9D,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useTranslation } from "react-i18next";
3
- import CannedResponseIcon from "../../assets/svg/cannedResponse";
4
- import { Button, Input } from "antd";
5
- import { Icon } from "../../components/icon";
6
- const CannedResponseHeader = (props) => {
7
- const { onClose, search, setSearch } = props;
8
- const { t } = useTranslation();
9
- return (_jsxs("div", { className: "px-3 py-2 flex flex-row items-center gap-2 border-b border-gray-200", children: [_jsxs("div", { className: "flex flex-row items-center gap-2", children: [_jsx(CannedResponseIcon, { size: 20, className: "text-blue-500" }), _jsx("span", { className: "text-base font-medium", children: t("canned_responses") })] }), _jsxs("div", { className: "flex flex-1 flex-row items-center justify-end gap-2", children: [_jsx(Input, { size: "large", placeholder: t("search"), prefix: _jsx(Icon, { icon: "search-o", size: 20, className: "text-gray-500" }), style: { width: 260 }, className: "text-sm", value: search, onChange: (e) => setSearch === null || setSearch === void 0 ? void 0 : setSearch(e.target.value) }), _jsx(Button, { type: "text", shape: "default", className: "text-gray-500 w-8 h-8 p-0", onClick: onClose, children: _jsx(Icon, { icon: "close-o", size: 16 }) })] })] }));
10
- };
11
- export default CannedResponseHeader;
@@ -1,8 +0,0 @@
1
- interface ICannedResponseProps {
2
- onClose?: () => void;
3
- openCreateCannedModal?: () => void;
4
- cannedQuery?: string;
5
- }
6
- declare const CannedResponse: ({ onClose, openCreateCannedModal, cannedQuery, }: ICannedResponseProps) => import("react/jsx-runtime").JSX.Element;
7
- export default CannedResponse;
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/cannedResponse/index.tsx"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,cAAc,GAAI,kDAIrB,oBAAoB,4CAgDtB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,34 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useDebounce } from "ahooks";
3
- import CannedResponseBody from "./CannedResponseBody";
4
- import CannedResponseHeader from "./CannedResponseHeader";
5
- import { useCallback, useState } from "react";
6
- import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
7
- import { $getRoot } from "lexical";
8
- import { $generateNodesFromDOM } from "@lexical/html";
9
- import CannedResponseFooter from "./CannedResponseFooter";
10
- const CannedResponse = ({ onClose, openCreateCannedModal, cannedQuery = "", }) => {
11
- const [editor] = useLexicalComposerContext();
12
- const [search, setSearch] = useState("");
13
- const debouncedSearch = useDebounce(search, {
14
- wait: 300,
15
- });
16
- const onSelectCannedResponse = useCallback((content) => {
17
- editor.update(() => {
18
- const root = $getRoot();
19
- // 1. Clear content cũ
20
- root.clear();
21
- // 2. Parse HTML -> DOM
22
- const parser = new DOMParser();
23
- const dom = parser.parseFromString(content, "text/html");
24
- // 3. Convert DOM -> Lexical nodes
25
- const nodes = $generateNodesFromDOM(editor, dom);
26
- // 4. Append vào editor
27
- root.append(...nodes);
28
- // 5. Move cursor về cuối (optional nhưng nên có)
29
- root.selectEnd();
30
- });
31
- }, [editor]);
32
- return (_jsxs("div", { className: "w-[600px]", children: [_jsx(CannedResponseHeader, { onClose: onClose, search: search, setSearch: setSearch }), _jsx(CannedResponseBody, { search: debouncedSearch, onSelectCannedResponse: onSelectCannedResponse, cannedQuery: cannedQuery }), _jsx(CannedResponseFooter, { openCreateCannedModal: openCreateCannedModal })] }));
33
- };
34
- export default CannedResponse;
@@ -1,11 +0,0 @@
1
- import { IMyTeamResponse } from "../../../types/dto";
2
- interface TeamItemProps {
3
- team: IMyTeamResponse;
4
- onSelectCategory?: (teamId: string, categoryId?: string) => void;
5
- selectedTeamId?: string;
6
- selectedCategoryId?: string;
7
- defaultOpen?: boolean;
8
- }
9
- declare const TeamItem: ({ team, onSelectCategory, selectedTeamId, selectedCategoryId, defaultOpen, }: TeamItemProps) => import("react/jsx-runtime").JSX.Element;
10
- export default TeamItem;
11
- //# sourceMappingURL=TeamItem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamItem.d.ts","sourceRoot":"","sources":["../../../../src/components/cannedResponse/team/TeamItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQ9C,UAAU,aAAa;IACrB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,QAAA,MAAM,QAAQ,GAAI,8EAMf,aAAa,4CAiFf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useFetchCannedCategories } from "../../../hooks/cannedResponse/useFetchCannedCategories";
3
- import { useBoolean } from "ahooks";
4
- import { Icon } from "../../../components/icon";
5
- import clsx from "clsx";
6
- import { useTranslation } from "react-i18next";
7
- import { useCallback } from "react";
8
- const TeamItem = ({ team, onSelectCategory, selectedTeamId, selectedCategoryId, defaultOpen = false, }) => {
9
- const { t } = useTranslation();
10
- const [isOpen, { toggle }] = useBoolean(defaultOpen);
11
- const { data: categories } = useFetchCannedCategories(team.teamId, isOpen);
12
- const onToggle = useCallback(() => {
13
- if (!isOpen && !selectedTeamId && !!(team === null || team === void 0 ? void 0 : team.teamId)) {
14
- onSelectCategory === null || onSelectCategory === void 0 ? void 0 : onSelectCategory(team === null || team === void 0 ? void 0 : team.teamId, undefined);
15
- }
16
- toggle();
17
- }, [toggle, isOpen, onSelectCategory, team === null || team === void 0 ? void 0 : team.teamId, selectedTeamId]);
18
- return (_jsxs("div", { className: "border-b border-gray-200", children: [_jsxs("div", { className: "flex items-center justify-between py-2 cursor-pointer", onClick: onToggle, children: [_jsx("span", { className: "text-sm font-medium truncate flex-1", children: (team === null || team === void 0 ? void 0 : team.name) || "" }), _jsx(Icon, { icon: isOpen ? "angle-up-b" : "angle-down-b", size: 16, className: clsx(!isOpen && "text-gray-500") })] }), isOpen && (_jsxs("div", { className: "mb-2", children: [_jsx("div", { className: clsx("px-3 py-1 cursor-pointer hover:bg-gray-100 rounded-md", selectedTeamId &&
19
- selectedTeamId === (team === null || team === void 0 ? void 0 : team.teamId) &&
20
- !selectedCategoryId &&
21
- "bg-gray-100"), onClick: () => onSelectCategory === null || onSelectCategory === void 0 ? void 0 : onSelectCategory(team === null || team === void 0 ? void 0 : team.teamId, undefined), children: _jsx("span", { className: clsx("text-sm truncate", selectedTeamId === (team === null || team === void 0 ? void 0 : team.teamId) && !selectedCategoryId
22
- ? "font-medium text-blue-500"
23
- : "text-gray-500"), children: t("all") }) }, `${team.teamId}-all`), categories === null || categories === void 0 ? void 0 : categories.map((category) => {
24
- const isSelected = selectedTeamId &&
25
- selectedCategoryId &&
26
- selectedTeamId === (category === null || category === void 0 ? void 0 : category.teamId) &&
27
- selectedCategoryId === (category === null || category === void 0 ? void 0 : category.id);
28
- return (_jsx("div", { className: clsx("px-3 py-1 cursor-pointer hover:bg-gray-100 rounded-md", isSelected && "bg-gray-100"), onClick: () => onSelectCategory === null || onSelectCategory === void 0 ? void 0 : onSelectCategory(team === null || team === void 0 ? void 0 : team.teamId, category === null || category === void 0 ? void 0 : category.id), children: _jsx("span", { className: clsx("text-sm truncate", isSelected ? "font-medium text-blue-500" : "text-gray-500"), children: category === null || category === void 0 ? void 0 : category.name }) }, `${team.teamId}-${category.id}`));
29
- })] }))] }));
30
- };
31
- export default TeamItem;
@@ -1,6 +0,0 @@
1
- interface ChatBubbleProps {
2
- className?: string;
3
- }
4
- declare const ChatBubble: ({ className }: ChatBubbleProps) => import("react/jsx-runtime").JSX.Element;
5
- export default ChatBubble;
6
- //# sourceMappingURL=ChatBubble.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChatBubble.d.ts","sourceRoot":"","sources":["../../../src/components/chatBubble/ChatBubble.tsx"],"names":[],"mappings":"AAQA,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,UAAU,GAAI,eAAe,eAAe,4CA4FjD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,35 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { FloatButton, Drawer, Popover } from "antd";
4
- import { MessageOutlined, CloseOutlined } from "@ant-design/icons";
5
- import MessageList from "../../components/message/MessageList";
6
- import useConversationStore from "../../store/conversation";
7
- import { useIsMobile } from "../../hooks/common/useIsMobile";
8
- import { useBoolean } from "ahooks";
9
- const ChatBubble = ({ className }) => {
10
- const isMobile = useIsMobile();
11
- const selectedConversationId = useConversationStore((state) => state.selectedConversationId);
12
- const searchClientMsgID = useConversationStore((state) => state.searchClientMsgID);
13
- const unreadCount = useConversationStore((state) => { var _a; return ((_a = state.conversationData) === null || _a === void 0 ? void 0 : _a.unreadCount) || 0; });
14
- const displayUnread = unreadCount > 99 ? "99+" : unreadCount;
15
- const [isOpen, { setFalse: setOpenFalse, toggle: toggleChat }] = useBoolean(false);
16
- if (isMobile) {
17
- return (_jsxs(_Fragment, { children: [_jsx(FloatButton, { icon: isOpen ? _jsx(CloseOutlined, {}) : _jsx(MessageOutlined, {}), type: "primary", style: {
18
- right: 24,
19
- bottom: 24,
20
- width: 60,
21
- height: 60,
22
- }, onClick: toggleChat, className: className, badge: { count: displayUnread, color: "red" } }), _jsx(Drawer, { placement: "right", onClose: setOpenFalse, open: isOpen, mask: true, closable: false, styles: {
23
- body: { padding: 0 },
24
- }, classNames: {
25
- wrapper: "!z-[9999]",
26
- }, width: "100%", push: false, children: _jsx(MessageList, { conversationId: selectedConversationId, className: "flex-1", onClose: setOpenFalse, searchClientMsgID: searchClientMsgID }) })] }));
27
- }
28
- return (_jsx(Popover, { placement: "topLeft", trigger: "click", open: isOpen, destroyOnHidden: true, content: () => (_jsx("div", { className: "w-[400px] h-[600px]", children: _jsx(MessageList, { conversationId: selectedConversationId, className: "flex-1", onClose: setOpenFalse, searchClientMsgID: searchClientMsgID }) })), styles: { body: { padding: 0 } }, children: _jsx(FloatButton, { icon: isOpen ? _jsx(CloseOutlined, {}) : _jsx(MessageOutlined, {}), type: "primary", style: {
29
- right: 24,
30
- bottom: 24,
31
- width: 60,
32
- height: 60,
33
- }, className: className, badge: { count: displayUnread, color: "red" }, onClick: toggleChat }) }));
34
- };
35
- export default ChatBubble;
@@ -1,3 +0,0 @@
1
- declare const FileCollection: () => import("react/jsx-runtime").JSX.Element;
2
- export default FileCollection;
3
- //# sourceMappingURL=FileCollection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileCollection.d.ts","sourceRoot":"","sources":["../../../src/components/mediaCollection/FileCollection.tsx"],"names":[],"mappings":"AAaA,QAAA,MAAM,cAAc,+CAqGnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,53 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { MessageType } from "@openim/wasm-client-sdk";
3
- import { useSearchMessage } from "../../hooks/search/useSearchMessage";
4
- import InfiniteScroll from "react-infinite-scroll-component";
5
- import { Empty, Spin } from "antd";
6
- import { useCallback } from "react";
7
- import dayjs from "dayjs";
8
- import useConversationStore from "../../store/conversation";
9
- import { useTranslation } from "react-i18next";
10
- import { documentIcon } from "../../assets/svg";
11
- import { shortenFileName } from "../../components/message/footer/FilePreview";
12
- import { renderFileSize } from "../../utils/common";
13
- const FileCollection = () => {
14
- const { t } = useTranslation();
15
- const selectedSourceId = useConversationStore((state) => state.selectedSourceId);
16
- const { groupedData, fetchNextPage, hasNextPage, dataFlatten, isLoading } = useSearchMessage({
17
- payload: {
18
- recvID: selectedSourceId,
19
- contentType: MessageType.FileMessage,
20
- },
21
- });
22
- const handleDownload = (url, fileName) => {
23
- if (!url) {
24
- console.warn("Không có link file để tải");
25
- return;
26
- }
27
- const link = document.createElement("a");
28
- link.href = url;
29
- if (fileName) {
30
- link.setAttribute("download", fileName);
31
- }
32
- link.setAttribute("target", "_blank");
33
- link.setAttribute("rel", "noopener noreferrer");
34
- document.body.appendChild(link);
35
- link.click();
36
- link.remove();
37
- };
38
- const renderItem = useCallback((date, items) => {
39
- return (_jsxs("div", { className: "px-3", children: [_jsx("span", { className: "text-sm font-medium text-gray-500", children: dayjs(date).format("DD MMMM, YYYY") }), _jsx("div", { className: "flex flex-col gap-1 mt-2", children: items.map((item) => {
40
- var _a, _b, _c;
41
- const fileContent = JSON.parse(((_a = item === null || item === void 0 ? void 0 : item.chatLog) === null || _a === void 0 ? void 0 : _a.content) || "{}");
42
- return (_jsxs("div", { className: "relative flex flex-row items-center gap-2 align-center bg-gray-100 rounded-md p-2 cursor-pointer", onClick: () => handleDownload((fileContent === null || fileContent === void 0 ? void 0 : fileContent.sourceUrl) || "", (fileContent === null || fileContent === void 0 ? void 0 : fileContent.fileName) || ""), children: [documentIcon, _jsxs("div", { className: "flex flex-col flex-1", children: [_jsx("span", { className: "text-sm font-medium", children: shortenFileName((fileContent === null || fileContent === void 0 ? void 0 : fileContent.fileName) || "", {
43
- maxLength: 32,
44
- }) }), _jsx("span", { className: "text-xs text-gray-500", children: `${renderFileSize(fileContent.fileSize || 0)} - ${dayjs(((_b = item === null || item === void 0 ? void 0 : item.chatLog) === null || _b === void 0 ? void 0 : _b.sendTime) || 0).format("HH:mm")}` })] })] }, (_c = item.chatLog) === null || _c === void 0 ? void 0 : _c.clientMsgID));
45
- }) })] }, date));
46
- }, []);
47
- if (dataFlatten.length === 0 && !isLoading)
48
- return _jsx(Empty, { description: t("no_media_files") });
49
- if (isLoading)
50
- return (_jsx("div", { className: "flex items-center justify-center", children: _jsx(Spin, {}) }));
51
- return (_jsx("div", { id: "scrollableFileDiv", className: "h-full overflow-auto", children: _jsx(InfiniteScroll, { dataLength: Object.keys(groupedData).length, next: fetchNextPage, hasMore: hasNextPage, loader: _jsx("div", { className: "flex items-center justify-center py-2", children: _jsx(Spin, {}) }), scrollableTarget: "scrollableFileDiv", children: Object.entries(groupedData).map(([date, items]) => renderItem(date, items)) }) }));
52
- };
53
- export default FileCollection;
@@ -1,3 +0,0 @@
1
- declare const ImageCollection: () => import("react/jsx-runtime").JSX.Element;
2
- export default ImageCollection;
3
- //# sourceMappingURL=ImageCollection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageCollection.d.ts","sourceRoot":"","sources":["../../../src/components/mediaCollection/ImageCollection.tsx"],"names":[],"mappings":"AAYA,QAAA,MAAM,eAAe,+CA+GpB,CAAC;AAEF,eAAe,eAAe,CAAC"}