@droppii-org/chat-sdk 0.3.8 → 0.4.0

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 (253) hide show
  1. package/dist/components/canned-response/CannedResponseBody.js +1 -1
  2. package/dist/components/canned-response/CannedResponseFooter.js +1 -1
  3. package/dist/components/canned-response/CannedResponseHeader.js +1 -1
  4. package/dist/components/canned-response/index.js +1 -1
  5. package/dist/components/canned-response/team/TeamItem.js +1 -1
  6. package/dist/components/common/ConfirmModal.d.ts.map +1 -1
  7. package/dist/components/common/ConfirmModal.js +1 -1
  8. package/dist/components/common/InfoModal.d.ts.map +1 -1
  9. package/dist/components/common/InfoModal.js +1 -1
  10. package/dist/components/compose/ComposeNewMessageModal.d.ts.map +1 -1
  11. package/dist/components/compose/ComposeNewMessageModal.js +1 -1
  12. package/dist/components/conversation/ConversationByGroupItem.d.ts.map +1 -1
  13. package/dist/components/conversation/ConversationByGroupItem.js +2 -1
  14. package/dist/components/conversation/ConversationBySessionItem.d.ts.map +1 -1
  15. package/dist/components/conversation/ConversationBySessionItem.js +2 -1
  16. package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
  17. package/dist/components/conversation/DeskConversationList.js +1 -1
  18. package/dist/components/conversation/MentionIndicatorIcon.d.ts +7 -0
  19. package/dist/components/conversation/MentionIndicatorIcon.d.ts.map +1 -0
  20. package/dist/components/conversation/MentionIndicatorIcon.js +17 -0
  21. package/dist/components/conversation/SwipeActionButton.d.ts.map +1 -1
  22. package/dist/components/conversation/SwipeActionButton.js +1 -1
  23. package/dist/components/conversation/SwipeableRow.d.ts.map +1 -1
  24. package/dist/components/conversation/SwipeableRow.js +1 -1
  25. package/dist/components/conversation/ThreadCard.d.ts +2 -1
  26. package/dist/components/conversation/ThreadCard.d.ts.map +1 -1
  27. package/dist/components/conversation/ThreadCard.js +4 -4
  28. package/dist/components/conversation-detail/ConversationDetailHeader.d.ts.map +1 -1
  29. package/dist/components/conversation-detail/ConversationDetailHeader.js +2 -2
  30. package/dist/components/conversation-detail/ConversationDetailInput.d.ts.map +1 -1
  31. package/dist/components/conversation-detail/ConversationDetailInput.js +5 -1
  32. package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
  33. package/dist/components/conversation-detail/ConversationMessageList.js +1 -1
  34. package/dist/components/conversation-detail/ConversationMoreOptionItem.d.ts.map +1 -1
  35. package/dist/components/conversation-detail/ConversationMoreOptionItem.js +1 -1
  36. package/dist/components/conversation-detail/ConversationMoreOptionPanel.d.ts.map +1 -1
  37. package/dist/components/conversation-detail/ConversationMoreOptionPanel.js +1 -1
  38. package/dist/components/conversation-detail/PinLimitModal.d.ts.map +1 -1
  39. package/dist/components/conversation-detail/PinLimitModal.js +1 -1
  40. package/dist/components/conversation-detail/PinnedMessageBar.d.ts.map +1 -1
  41. package/dist/components/conversation-detail/PinnedMessageBar.js +8 -4
  42. package/dist/components/conversation-detail/PinnedMessageItem.d.ts.map +1 -1
  43. package/dist/components/conversation-detail/PinnedMessageItem.js +1 -1
  44. package/dist/components/conversation-detail/PinnedMessagesPanel.d.ts.map +1 -1
  45. package/dist/components/conversation-detail/PinnedMessagesPanel.js +1 -1
  46. package/dist/components/conversation-detail/ThreadProfilePanel.d.ts.map +1 -1
  47. package/dist/components/conversation-detail/ThreadProfilePanel.js +1 -1
  48. package/dist/components/conversation-detail/bot/BotButtonMessage.d.ts.map +1 -1
  49. package/dist/components/conversation-detail/bot/BotButtonMessage.js +1 -1
  50. package/dist/components/conversation-detail/bot/BotInactiveNotice.d.ts.map +1 -1
  51. package/dist/components/conversation-detail/bot/BotInactiveNotice.js +1 -1
  52. package/dist/components/conversation-detail/bot/BotMenuSheet.d.ts.map +1 -1
  53. package/dist/components/conversation-detail/bot/BotMenuSheet.js +1 -1
  54. package/dist/components/conversation-detail/bot/BotStartButton.d.ts.map +1 -1
  55. package/dist/components/conversation-detail/bot/BotStartButton.js +1 -1
  56. package/dist/components/conversation-detail/bot/BotSuggest.d.ts.map +1 -1
  57. package/dist/components/conversation-detail/bot/BotSuggest.js +2 -2
  58. package/dist/components/conversation-detail/bot/CsSessionConfirmModal.d.ts.map +1 -1
  59. package/dist/components/conversation-detail/bot/CsSessionConfirmModal.js +1 -1
  60. package/dist/components/conversation-inbox/ConversationInboxHeader.d.ts.map +1 -1
  61. package/dist/components/conversation-inbox/ConversationInboxHeader.js +1 -1
  62. package/dist/components/conversation-inbox/ConversationInboxItem.d.ts.map +1 -1
  63. package/dist/components/conversation-inbox/ConversationInboxItem.js +2 -1
  64. package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
  65. package/dist/components/conversation-inbox/ConversationInboxList.js +1 -1
  66. package/dist/components/conversation-inbox/ConversationInboxTitle.d.ts.map +1 -1
  67. package/dist/components/conversation-inbox/ConversationInboxTitle.js +1 -1
  68. package/dist/components/conversation-inbox/ConversationPeerAvatar.d.ts.map +1 -1
  69. package/dist/components/conversation-inbox/ConversationPeerAvatar.js +1 -1
  70. package/dist/components/conversation-inbox/MuteConversationConfirmModal.d.ts.map +1 -1
  71. package/dist/components/conversation-inbox/MuteConversationConfirmModal.js +1 -1
  72. package/dist/components/group/AddMemberModal.d.ts.map +1 -1
  73. package/dist/components/group/AddMemberModal.js +1 -1
  74. package/dist/components/group/CreateGroupForm.d.ts.map +1 -1
  75. package/dist/components/group/CreateGroupForm.js +1 -3
  76. package/dist/components/group/GroupMemberPicker.js +1 -1
  77. package/dist/components/group/MemberPermissionPanel.js +1 -1
  78. package/dist/components/icon/index.d.ts.map +1 -1
  79. package/dist/components/icon/index.js +1 -1
  80. package/dist/components/media-collection/FileCollection.d.ts.map +1 -1
  81. package/dist/components/media-collection/FileCollection.js +1 -1
  82. package/dist/components/media-collection/ImageCollection.d.ts.map +1 -1
  83. package/dist/components/media-collection/ImageCollection.js +1 -1
  84. package/dist/components/media-collection/LinkCollection.d.ts.map +1 -1
  85. package/dist/components/media-collection/LinkCollection.js +2 -2
  86. package/dist/components/media-collection/VideoCollection.d.ts.map +1 -1
  87. package/dist/components/media-collection/VideoCollection.js +1 -1
  88. package/dist/components/media-collection/index.js +1 -1
  89. package/dist/components/media-resources/FileResourceList.d.ts.map +1 -1
  90. package/dist/components/media-resources/FileResourceList.js +1 -1
  91. package/dist/components/media-resources/ImageResourceGrid.d.ts.map +1 -1
  92. package/dist/components/media-resources/ImageResourceGrid.js +1 -1
  93. package/dist/components/media-resources/LinkResourceItem.d.ts.map +1 -1
  94. package/dist/components/media-resources/LinkResourceItem.js +1 -1
  95. package/dist/components/media-resources/LinkResourceList.d.ts.map +1 -1
  96. package/dist/components/media-resources/LinkResourceList.js +1 -1
  97. package/dist/components/media-resources/MediaEntryCard.d.ts.map +1 -1
  98. package/dist/components/media-resources/MediaEntryCard.js +1 -1
  99. package/dist/components/media-resources/MediaResourcePanel.d.ts.map +1 -1
  100. package/dist/components/media-resources/MediaResourcePanel.js +1 -1
  101. package/dist/components/media-resources/MediaResourceTabBar.d.ts.map +1 -1
  102. package/dist/components/media-resources/MediaResourceTabBar.js +1 -1
  103. package/dist/components/media-resources/MediaResourceTabs.js +1 -1
  104. package/dist/components/media-resources/ResourceEmptyState.d.ts.map +1 -1
  105. package/dist/components/media-resources/ResourceEmptyState.js +1 -1
  106. package/dist/components/media-resources/ResourceScrollContainer.d.ts.map +1 -1
  107. package/dist/components/media-resources/ResourceScrollContainer.js +1 -1
  108. package/dist/components/media-resources/VideoResourceGrid.d.ts.map +1 -1
  109. package/dist/components/media-resources/VideoResourceGrid.js +1 -1
  110. package/dist/components/message/GroupMembersDrawer.js +1 -1
  111. package/dist/components/message/MessageHeader.d.ts.map +1 -1
  112. package/dist/components/message/MessageHeader.js +3 -2
  113. package/dist/components/message/MessageInfiniteScroll.d.ts.map +1 -1
  114. package/dist/components/message/MessageInfiniteScroll.js +1 -1
  115. package/dist/components/message/MessageList.d.ts.map +1 -1
  116. package/dist/components/message/MessageList.js +22 -12
  117. package/dist/components/message/SelectSession.js +1 -1
  118. package/dist/components/message/UnassignedSessionFooter.d.ts.map +1 -1
  119. package/dist/components/message/UnassignedSessionFooter.js +1 -1
  120. package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
  121. package/dist/components/message/footer/ActionBar.js +4 -1
  122. package/dist/components/message/footer/ComposerEditor.js +1 -1
  123. package/dist/components/message/footer/ComposerTabs.d.ts.map +1 -1
  124. package/dist/components/message/footer/ComposerTabs.js +1 -1
  125. package/dist/components/message/footer/EmojiPicker.js +1 -1
  126. package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
  127. package/dist/components/message/footer/EnterHandler.js +10 -1
  128. package/dist/components/message/footer/FilePreview.d.ts.map +1 -1
  129. package/dist/components/message/footer/FilePreview.js +4 -4
  130. package/dist/components/message/footer/LinkInputPreview.d.ts.map +1 -1
  131. package/dist/components/message/footer/LinkInputPreview.js +1 -1
  132. package/dist/components/message/footer/MediaActions.js +1 -1
  133. package/dist/components/message/footer/SessionClosedModal.d.ts.map +1 -1
  134. package/dist/components/message/footer/SessionClosedModal.js +1 -1
  135. package/dist/components/message/footer/ToolbarPlugin.js +1 -1
  136. package/dist/components/message/footer/editorConfig.d.ts +2 -1
  137. package/dist/components/message/footer/editorConfig.d.ts.map +1 -1
  138. package/dist/components/message/footer/editorConfig.js +2 -0
  139. package/dist/components/message/footer/index.d.ts.map +1 -1
  140. package/dist/components/message/footer/index.js +16 -2
  141. package/dist/components/message/footer/mention/MentionMenu.d.ts +6 -0
  142. package/dist/components/message/footer/mention/MentionMenu.d.ts.map +1 -0
  143. package/dist/components/message/footer/mention/MentionMenu.js +51 -0
  144. package/dist/components/message/footer/mention/MentionNode.d.ts +20 -0
  145. package/dist/components/message/footer/mention/MentionNode.d.ts.map +1 -0
  146. package/dist/components/message/footer/mention/MentionNode.js +39 -0
  147. package/dist/components/message/footer/mention/extractMentions.d.ts +6 -0
  148. package/dist/components/message/footer/mention/extractMentions.d.ts.map +1 -0
  149. package/dist/components/message/footer/mention/extractMentions.js +66 -0
  150. package/dist/components/message/footer/mention/useMentionOptions.d.ts +8 -0
  151. package/dist/components/message/footer/mention/useMentionOptions.d.ts.map +1 -0
  152. package/dist/components/message/footer/mention/useMentionOptions.js +45 -0
  153. package/dist/components/message/item/AtTextMessage.d.ts +16 -0
  154. package/dist/components/message/item/AtTextMessage.d.ts.map +1 -0
  155. package/dist/components/message/item/AtTextMessage.js +112 -0
  156. package/dist/components/message/item/FileMessage.js +1 -1
  157. package/dist/components/message/item/GroupNotificationMessage.d.ts.map +1 -1
  158. package/dist/components/message/item/GroupNotificationMessage.js +2 -2
  159. package/dist/components/message/item/ImageMessage.js +1 -1
  160. package/dist/components/message/item/LinkCard.d.ts.map +1 -1
  161. package/dist/components/message/item/LinkCard.js +1 -1
  162. package/dist/components/message/item/LinkText.d.ts.map +1 -1
  163. package/dist/components/message/item/LinkText.js +1 -1
  164. package/dist/components/message/item/MergeImageMessage.js +1 -1
  165. package/dist/components/message/item/MessageBubble.d.ts.map +1 -1
  166. package/dist/components/message/item/MessageBubble.js +2 -2
  167. package/dist/components/message/item/QuoteMessage.d.ts.map +1 -1
  168. package/dist/components/message/item/QuoteMessage.js +1 -1
  169. package/dist/components/message/item/RevokeMessage.d.ts.map +1 -1
  170. package/dist/components/message/item/RevokeMessage.js +1 -1
  171. package/dist/components/message/item/VideoMessage.js +1 -1
  172. package/dist/components/message/item/index.d.ts.map +1 -1
  173. package/dist/components/message/item/index.js +3 -3
  174. package/dist/components/message/item/renderMessageContent.d.ts.map +1 -1
  175. package/dist/components/message/item/renderMessageContent.js +3 -0
  176. package/dist/components/message/reply/ReplyPreviewBar.d.ts.map +1 -1
  177. package/dist/components/message/reply/ReplyPreviewBar.js +1 -1
  178. package/dist/components/message/reply/ReplyQuoteContent.d.ts.map +1 -1
  179. package/dist/components/message/reply/ReplyQuoteContent.js +7 -5
  180. package/dist/components/message/toolbox/MessageToolboxMenu.js +1 -1
  181. package/dist/components/message/toolbox/getCopyableMessageText.d.ts.map +1 -1
  182. package/dist/components/message/toolbox/getCopyableMessageText.js +5 -3
  183. package/dist/components/message/toolbox/isPinnableMessageType.d.ts.map +1 -1
  184. package/dist/components/message/toolbox/isPinnableMessageType.js +1 -0
  185. package/dist/components/search-conversation/SearchAll.d.ts.map +1 -1
  186. package/dist/components/search-conversation/SearchAll.js +1 -1
  187. package/dist/components/search-conversation/SearchConversationAsMessages.d.ts.map +1 -1
  188. package/dist/components/search-conversation/SearchConversationAsMessages.js +1 -1
  189. package/dist/components/search-conversation/SearchConversationAsUsers.d.ts.map +1 -1
  190. package/dist/components/search-conversation/SearchConversationAsUsers.js +1 -1
  191. package/dist/components/search-conversation/SearchConversationMyInbox.js +1 -1
  192. package/dist/components/search-conversation/SearchDrawer.js +1 -1
  193. package/dist/components/search-conversation/SearchMessageOnCurrentConversation.d.ts.map +1 -1
  194. package/dist/components/search-conversation/SearchMessageOnCurrentConversation.js +1 -1
  195. package/dist/components/search-conversation/index.js +1 -1
  196. package/dist/components/search-conversation/item/SearchItemAsMessage.d.ts.map +1 -1
  197. package/dist/components/search-conversation/item/SearchItemAsMessage.js +1 -1
  198. package/dist/components/search-conversation/item/SearchItemAsUser.d.ts.map +1 -1
  199. package/dist/components/search-conversation/item/SearchItemAsUser.js +1 -1
  200. package/dist/components/session/DeskTeamInbox.d.ts.map +1 -1
  201. package/dist/components/session/DeskTeamInbox.js +3 -2
  202. package/dist/components/session/SessionFilterMenu.d.ts.map +1 -1
  203. package/dist/components/session/SessionFilterMenu.js +1 -1
  204. package/dist/components/thread/AssignConfirmModal.d.ts.map +1 -1
  205. package/dist/components/thread/AssignConfirmModal.js +1 -1
  206. package/dist/components/thread/GroupThreadInfo.d.ts.map +1 -1
  207. package/dist/components/thread/GroupThreadInfo.js +7 -4
  208. package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
  209. package/dist/components/thread/ManualAssignPopover.js +1 -1
  210. package/dist/components/thread/SessionSection.d.ts.map +1 -1
  211. package/dist/components/thread/SessionSection.js +2 -2
  212. package/dist/components/thread/SingleThreadInfo.d.ts.map +1 -1
  213. package/dist/components/thread/SingleThreadInfo.js +1 -1
  214. package/dist/components/thread/ThreadInfo.js +1 -1
  215. package/dist/components/thread/UserSection.d.ts.map +1 -1
  216. package/dist/components/thread/UserSection.js +1 -1
  217. package/dist/components/video-player/VideoPlayerModal.d.ts.map +1 -1
  218. package/dist/components/video-player/VideoPlayerModal.js +1 -1
  219. package/dist/context/ChatContext.d.ts +1 -1
  220. package/dist/context/ChatContext.d.ts.map +1 -1
  221. package/dist/context/ChatContext.js +2 -1
  222. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  223. package/dist/hooks/global/useGlobalEvent.js +115 -25
  224. package/dist/hooks/group/useGroupPermission.d.ts +1 -1
  225. package/dist/hooks/group/useGroupPermission.d.ts.map +1 -1
  226. package/dist/hooks/group/useGroupPermission.js +2 -2
  227. package/dist/hooks/message/useMessage.d.ts +4 -1
  228. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  229. package/dist/hooks/message/useMessage.js +9 -2
  230. package/dist/hooks/message/useSendMessage.d.ts +8 -4
  231. package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
  232. package/dist/hooks/message/useSendMessage.js +46 -12
  233. package/dist/hooks/session/useConversationSessionState.d.ts +2 -1
  234. package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -1
  235. package/dist/hooks/session/useConversationSessionState.js +5 -5
  236. package/dist/layout/index.d.ts.map +1 -1
  237. package/dist/layout/index.js +10 -1
  238. package/dist/locales/vi/common.json +9 -0
  239. package/dist/locales/vi/conversation-inbox.json +4 -0
  240. package/dist/store/auth.js +1 -1
  241. package/dist/store/conversation.d.ts.map +1 -1
  242. package/dist/store/conversation.js +93 -51
  243. package/dist/store/type.d.ts +6 -2
  244. package/dist/store/type.d.ts.map +1 -1
  245. package/dist/styles/global.css +1 -1
  246. package/dist/types/chat.d.ts +28 -2
  247. package/dist/types/chat.d.ts.map +1 -1
  248. package/dist/utils/common.d.ts.map +1 -1
  249. package/dist/utils/common.js +19 -9
  250. package/dist/utils/messageLog.d.ts +2 -2
  251. package/dist/utils/messageLog.d.ts.map +1 -1
  252. package/dist/utils/messageLog.js +33 -3
  253. package/package.json +17 -3
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAEhB,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOhD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,WAAW,MAAM,KAChB,MAAmE,CAAC;AAEvE,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,CAAC,CAQlE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,eAAe,GAAG,SAQhE,CAAC;AAmCF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,EACb,UAAS,sBAA2B,WAoBrC,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,aAAa,WAAW,EACxB,YAAY,MAAM,EAClB,IAAI,SAAS,EACb,YAAY;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACpD,aAAa;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,WAwC1D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,KAAG,OAS5D,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,eAAe,gBAAgB,EAAE,EACjC,OAAO,OAAO,KACb,gBAAgB,EAMlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,IAAI,SAAS,EACb,eAAe;IAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAClE,UAAU;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAE,WAuG5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,kBAAc,WA2Cf,CAAC;AAEF,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAqBR;AAMD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,eAAO,MAAM,QAAQ,QAAkD,CAAC;AAExE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAqC3D;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAOrD,CAAC;AAKF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OACf,CAAC;AAEnC,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAO9B,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgEjD"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAEhB,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOhD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,WAAW,MAAM,KAChB,MAAmE,CAAC;AAEvE,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,CAAC,CAQlE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,eAAe,GAAG,SAQhE,CAAC;AAmCF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,EACb,UAAS,sBAA2B,WAoBrC,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,aAAa,WAAW,EACxB,YAAY,MAAM,EAClB,IAAI,SAAS,EACb,YAAY;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACpD,aAAa;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,WAyC1D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,KAAG,OAS5D,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,eAAe,gBAAgB,EAAE,EACjC,OAAO,OAAO,KACb,gBAAgB,EAMlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,IAAI,SAAS,EACb,eAAe;IAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAClE,UAAU;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAE,WA6G5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,kBAAc,WA2Cf,CAAC;AAEF,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAqBR;AAMD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,eAAO,MAAM,QAAQ,QAAiD,CAAC;AAEvE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAqC3D;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAOrD,CAAC;AAKF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OACf,CAAC;AAEnC,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAO9B,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoEjD"}
@@ -89,6 +89,7 @@ export const generateContentBasedOnMessageType = (contentType, plainText, t, med
89
89
  case MessageType.QuoteMessage:
90
90
  case MessageType.UrlTextMessage:
91
91
  case MessageType.LogTextMessage:
92
+ case MessageType.AtTextMessage:
92
93
  return plainText || "";
93
94
  case MessageType.PictureMessage:
94
95
  case MessageType.MergeMessage:
@@ -140,7 +141,7 @@ export const ignoreInternalLatestMessage = (conversations, isCrm) => {
140
141
  return conversations.filter((conversation) => !isInternalLatestMessage(conversation.latestMsg));
141
142
  };
142
143
  export const parseLatestMessage = (latestMsg, currentUserId, t, conversation, options) => {
143
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
144
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
144
145
  if (!latestMsg)
145
146
  return "";
146
147
  const includeSenderPrefix = (_a = options === null || options === void 0 ? void 0 : options.includeSenderPrefix) !== null && _a !== void 0 ? _a : true;
@@ -156,9 +157,11 @@ export const parseLatestMessage = (latestMsg, currentUserId, t, conversation, op
156
157
  case MessageType.TextMessage:
157
158
  case MessageType.QuoteMessage:
158
159
  case MessageType.UrlTextMessage:
160
+ case MessageType.AtTextMessage:
159
161
  return formatWithSender(sender, generateContentBasedOnMessageType(contentType, ((_b = msgData === null || msgData === void 0 ? void 0 : msgData.textElem) === null || _b === void 0 ? void 0 : _b.content) ||
160
162
  ((_c = msgData === null || msgData === void 0 ? void 0 : msgData.quoteElem) === null || _c === void 0 ? void 0 : _c.text) ||
161
163
  ((_d = msgData === null || msgData === void 0 ? void 0 : msgData.urlTextElem) === null || _d === void 0 ? void 0 : _d.content) ||
164
+ ((_e = msgData === null || msgData === void 0 ? void 0 : msgData.atTextElem) === null || _e === void 0 ? void 0 : _e.text) ||
162
165
  ""));
163
166
  case MessageType.PictureMessage:
164
167
  case MessageType.MergeMessage:
@@ -167,23 +170,23 @@ export const parseLatestMessage = (latestMsg, currentUserId, t, conversation, op
167
170
  case MessageType.FileMessage:
168
171
  case MessageType.StickerMessage:
169
172
  return formatWithSender(sender, generateContentBasedOnMessageType(contentType, undefined, t, {
170
- duration: (_e = msgData === null || msgData === void 0 ? void 0 : msgData.videoElem) === null || _e === void 0 ? void 0 : _e.duration,
171
- fileName: (_f = msgData === null || msgData === void 0 ? void 0 : msgData.fileElem) === null || _f === void 0 ? void 0 : _f.fileName,
173
+ duration: (_f = msgData === null || msgData === void 0 ? void 0 : msgData.videoElem) === null || _f === void 0 ? void 0 : _f.duration,
174
+ fileName: (_g = msgData === null || msgData === void 0 ? void 0 : msgData.fileElem) === null || _g === void 0 ? void 0 : _g.fileName,
172
175
  }));
173
176
  case MessageType.RevokeMessage:
174
177
  return sender
175
178
  ? translateOrFallback(t, "revoked_with_sender", "Tin nhắn đã bị thu hồi", { name: sender })
176
179
  : translateOrFallback(t, "revoked", "Tin nhắn đã bị thu hồi");
177
180
  case MessageType.CustomMessage: {
178
- const customData = (_g = msgData.customElem) === null || _g === void 0 ? void 0 : _g.data;
181
+ const customData = (_h = msgData.customElem) === null || _h === void 0 ? void 0 : _h.data;
179
182
  if (customData === "#SESSION - START") {
180
183
  return translateOrFallback(t, "session_started", "Phiên chat đã được bắt đầu");
181
184
  }
182
185
  if (customData === "#SESSION - END") {
183
186
  return translateOrFallback(t, "session_ended", "Phiên chat đã kết thúc");
184
187
  }
185
- if (((_h = msgData.customElem) === null || _h === void 0 ? void 0 : _h.extension) === CustomMessageType.Order) {
186
- const orderCode = ((_j = msgData.customElem) === null || _j === void 0 ? void 0 : _j.description) || "";
188
+ if (((_j = msgData.customElem) === null || _j === void 0 ? void 0 : _j.extension) === CustomMessageType.Order) {
189
+ const orderCode = ((_k = msgData.customElem) === null || _k === void 0 ? void 0 : _k.description) || "";
187
190
  return formatWithSender(sender, translateOrFallback(t, "msg_type_order", `[Đơn hàng] ${orderCode}`, { orderCode }));
188
191
  }
189
192
  return "";
@@ -202,10 +205,12 @@ export const parseLatestMessage = (latestMsg, currentUserId, t, conversation, op
202
205
  case MessageType.GroupCancelMuted:
203
206
  case MessageType.GroupAnnouncementUpdated:
204
207
  case MessageType.GroupNameUpdated:
208
+ case MessageType.MemberSetToAdmin:
209
+ case MessageType.MessagePinned:
205
210
  // notificationElem.detail is raw OpenIM *Tips protocol JSON, not a
206
211
  // ready sentence — parse per-type (opUser/group/kickedUserList/...)
207
212
  // and build the sentence ourselves.
208
- return getGroupNotificationText(contentType, (_k = msgData === null || msgData === void 0 ? void 0 : msgData.notificationElem) === null || _k === void 0 ? void 0 : _k.detail, t);
213
+ return getGroupNotificationText(contentType, (_l = msgData === null || msgData === void 0 ? void 0 : msgData.notificationElem) === null || _l === void 0 ? void 0 : _l.detail, t, msgData === null || msgData === void 0 ? void 0 : msgData.senderNickname);
209
214
  default:
210
215
  return translateOrFallback(t, "msg_type_unsupported", "Loại tin nhắn không được hỗ trợ");
211
216
  }
@@ -285,7 +290,7 @@ export function formatDividerTimestamp(timestamp) {
285
290
  }
286
291
  return date.format("HH:mm DD/MM/YYYY");
287
292
  }
288
- export const urlRegex = /\bhttps?:\/\/[^\s<>"']*[^\s<>"',.!?()\[\]{}]/g;
293
+ export const urlRegex = /\bhttps?:\/\/[^\s<>"']*[^\s<>"',.!?()[\]{}]/g;
289
294
  export function wrapLinksInHtml(htmlContent) {
290
295
  var _a;
291
296
  // Regex để kiểm tra xem link có nằm trong thẻ <a> không
@@ -400,7 +405,12 @@ export function sanitizeHtml(html) {
400
405
  "style", // Allow style for basic formatting
401
406
  ],
402
407
  ALLOW_DATA_ATTR: false, // Prevent data-* attributes
403
- ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,
408
+ // `-` in [^a-z+.-:] below is NOT safely droppable: unescaped, it becomes
409
+ // a range operator (. to :), silently widening this security-sensitive
410
+ // URI allowlist regex — verified via direct match-behavior testing.
411
+ ALLOWED_URI_REGEXP:
412
+ // eslint-disable-next-line no-useless-escape
413
+ /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,
404
414
  });
405
415
  // Remove hooks after sanitization
406
416
  DOMPurify.removeHook("afterSanitizeAttributes");
@@ -1,9 +1,9 @@
1
1
  import { MessageItem, MessageType } from "@droppii-org/wasm-client-sdk";
2
2
  import { TFunction } from "i18next";
3
3
  export declare const SYSTEM_LOG_MESSAGE_TYPES: readonly [MessageType.LogTextMessage];
4
- export declare const GROUP_NOTIFICATION_MESSAGE_TYPES: readonly [MessageType.GroupCreated, MessageType.GroupInfoUpdated, MessageType.MemberQuit, MessageType.GroupOwnerTransferred, MessageType.MemberKicked, MessageType.MemberInvited, MessageType.MemberEnter, MessageType.GroupDismissed, MessageType.GroupMemberMuted, MessageType.GroupMemberCancelMuted, MessageType.GroupMuted, MessageType.GroupCancelMuted, MessageType.GroupAnnouncementUpdated, MessageType.GroupNameUpdated];
4
+ export declare const GROUP_NOTIFICATION_MESSAGE_TYPES: readonly [MessageType.GroupCreated, MessageType.GroupInfoUpdated, MessageType.MemberQuit, MessageType.GroupOwnerTransferred, MessageType.MemberKicked, MessageType.MemberInvited, MessageType.MemberEnter, MessageType.GroupDismissed, MessageType.GroupMemberMuted, MessageType.GroupMemberCancelMuted, MessageType.GroupMuted, MessageType.GroupCancelMuted, MessageType.GroupAnnouncementUpdated, MessageType.GroupNameUpdated, MessageType.MemberSetToAdmin, MessageType.MessagePinned];
5
5
  export declare const isGroupNotificationMessageType: (contentType?: number) => boolean;
6
- export declare const getGroupNotificationText: (contentType: number | undefined, detailJson: string | undefined, t?: TFunction) => string;
6
+ export declare const getGroupNotificationText: (contentType: number | undefined, detailJson: string | undefined, t?: TFunction, senderNickname?: string) => string;
7
7
  export declare const isSystemLogMessageType: (contentType?: number) => contentType is MessageType.LogTextMessage;
8
8
  export declare const getSystemLogMessageText: (message: Partial<MessageItem>) => string;
9
9
  export declare const getSystemLogMessageHtml: (message: Partial<MessageItem>) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"messageLog.d.ts","sourceRoot":"","sources":["../../src/utils/messageLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,eAAO,MAAM,wBAAwB,uCAAwC,CAAC;AAE9E,eAAO,MAAM,gCAAgC,oaAenC,CAAC;AAEX,eAAO,MAAM,8BAA8B,GAAI,cAAc,MAAM,YAGhE,CAAC;AA6BJ,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,GAAG,SAAS,EAC/B,YAAY,MAAM,GAAG,SAAS,EAC9B,IAAI,SAAS,KACZ,MAgHF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,cAAc,MAAM,8CACf,CAAC;AAE7C,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,CAAC,WAAW,CAAC,WAyBpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,CAAC,WAAW,CAAC,WA2BpE,CAAC"}
1
+ {"version":3,"file":"messageLog.d.ts","sourceRoot":"","sources":["../../src/utils/messageLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,eAAO,MAAM,wBAAwB,uCAAwC,CAAC;AAE9E,eAAO,MAAM,gCAAgC,6dAmBnC,CAAC;AAEX,eAAO,MAAM,8BAA8B,GAAI,cAAc,MAAM,YAGhE,CAAC;AAsCJ,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,GAAG,SAAS,EAC/B,YAAY,MAAM,GAAG,SAAS,EAC9B,IAAI,SAAS,EACb,iBAAiB,MAAM,KACtB,MA4IF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,cAAc,MAAM,8CACf,CAAC;AAE7C,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,CAAC,WAAW,CAAC,WAyBpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,CAAC,WAAW,CAAC,WA2BpE,CAAC"}
@@ -15,18 +15,41 @@ export const GROUP_NOTIFICATION_MESSAGE_TYPES = [
15
15
  MessageType.GroupCancelMuted,
16
16
  MessageType.GroupAnnouncementUpdated,
17
17
  MessageType.GroupNameUpdated,
18
+ MessageType.MemberSetToAdmin,
19
+ // MessagePinned and MessageUnpinned share contentType 2103 — the actual
20
+ // action is read from message.isPinned, not distinguishable by type alone.
21
+ MessageType.MessagePinned,
18
22
  ];
19
23
  export const isGroupNotificationMessageType = (contentType) => GROUP_NOTIFICATION_MESSAGE_TYPES.includes(contentType);
20
24
  const joinNicknames = (users) => (users || []).map((user) => user.nickname || user.userID || "").join(", ");
21
- export const getGroupNotificationText = (contentType, detailJson, t) => {
22
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
25
+ export const getGroupNotificationText = (contentType, detailJson, t, senderNickname) => {
26
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
23
27
  if (!detailJson)
24
28
  return "";
29
+ // Operator name comes from the caller's senderNickname (the notification
30
+ // message is sent by the operator), since the payload has none.
31
+ if (contentType === MessageType.MessagePinned) {
32
+ let pinDetail;
33
+ try {
34
+ pinDetail = JSON.parse(detailJson);
35
+ }
36
+ catch (_t) {
37
+ return "";
38
+ }
39
+ const operatorName = senderNickname || "";
40
+ return pinDetail.isPinned
41
+ ? t
42
+ ? String(t("group_notification_message_pinned", { name: operatorName }))
43
+ : `${operatorName} đã ghim một tin nhắn`
44
+ : t
45
+ ? String(t("group_notification_message_unpinned", { name: operatorName }))
46
+ : `${operatorName} đã bỏ ghim một tin nhắn`;
47
+ }
25
48
  let detail;
26
49
  try {
27
50
  detail = JSON.parse(detailJson);
28
51
  }
29
- catch (_r) {
52
+ catch (_u) {
30
53
  return "";
31
54
  }
32
55
  const opUserName = ((_a = detail.opUser) === null || _a === void 0 ? void 0 : _a.nickname) || "";
@@ -109,6 +132,13 @@ export const getGroupNotificationText = (contentType, detailJson, t) => {
109
132
  return t
110
133
  ? String(t("group_notification_cancel_muted", { name: opUserName }))
111
134
  : `${opUserName} đã bật lại quyền gửi tin nhắn của cả nhóm`;
135
+ case MessageType.MemberSetToAdmin:
136
+ return t
137
+ ? String(t("group_notification_member_set_admin", {
138
+ name: opUserName,
139
+ target: ((_r = detail.changedUser) === null || _r === void 0 ? void 0 : _r.nickname) || "",
140
+ }))
141
+ : `${opUserName} đã chỉ định ${((_s = detail.changedUser) === null || _s === void 0 ? void 0 : _s.nickname) || ""} làm quản trị viên`;
112
142
  default:
113
143
  return "";
114
144
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-sdk",
3
- "version": "0.3.8",
3
+ "version": "0.4.0",
4
4
  "description": "Droppii React Chat SDK",
5
5
  "repository": {
6
6
  "type": "git",
@@ -66,6 +66,8 @@
66
66
  "dev": "tsc --noEmit --watch",
67
67
  "lint": "eslint src/",
68
68
  "type-check": "tsc --noEmit",
69
+ "test": "vitest run",
70
+ "test:watch": "vitest",
69
71
  "prepublishOnly": "pnpm build",
70
72
  "copy-assets": "shx cp -r src/assets dist && shx cp -r src/locales dist"
71
73
  },
@@ -82,7 +84,7 @@
82
84
  },
83
85
  "dependencies": {
84
86
  "@ant-design/icons": "^6.0.0",
85
- "@droppii-org/wasm-client-sdk": "0.3.2",
87
+ "@droppii-org/wasm-client-sdk": "0.4.0",
86
88
  "@lexical/code": "^0.34.0",
87
89
  "@lexical/html": "^0.34.0",
88
90
  "@lexical/link": "^0.34.0",
@@ -121,13 +123,25 @@
121
123
  "react-dom": "^18.0.0"
122
124
  },
123
125
  "devDependencies": {
126
+ "@testing-library/jest-dom": "^7.0.1",
127
+ "@testing-library/react": "^16.3.2",
128
+ "@testing-library/user-event": "^14.6.6",
124
129
  "@types/dompurify": "^3.2.0",
125
130
  "@types/lodash": "^4.17.20",
126
131
  "@types/node": "^20.0.0",
127
132
  "@types/react": "^18.2.37",
128
133
  "@types/react-dom": "^18.2.15",
134
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
135
+ "@typescript-eslint/parser": "^6.21.0",
136
+ "@vitejs/plugin-react": "^6.1.0",
137
+ "@vitest/ui": "^4.1.11",
138
+ "eslint": "^8.57.1",
139
+ "eslint-plugin-react": "^7.37.5",
140
+ "eslint-plugin-react-hooks": "^5.0.0",
141
+ "jsdom": "^30.0.1",
129
142
  "shx": "^0.4.0",
130
143
  "tsc-alias": "^1.8.17",
131
- "typescript": "^5.2.2"
144
+ "typescript": "^5.2.2",
145
+ "vitest": "^4.1.11"
132
146
  }
133
147
  }