tuikit-atomicx-vue3 0.1.1 → 3.3.0-beta.3

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 (455) hide show
  1. package/dist/MessageInput.vue_vue_type_script_setup_true_lang-XRL7A5Gj.js +123 -0
  2. package/dist/{PopoverTrigger-ByOI-vdB.js → PopoverTrigger-BKOIHfdS.js} +1 -1
  3. package/dist/{PopperContent-BaiCn-CA.js → PopperContent-DtL7HVWz.js} +29 -21
  4. package/dist/baseComp/TuiSwitch.js +2 -2
  5. package/dist/baseComp/index.d.ts +0 -1
  6. package/dist/baseComp/index.js +1 -3
  7. package/dist/chat/index.d.ts +2230 -4090
  8. package/dist/chat/index.js +16 -8
  9. package/dist/components/Avatar/Avatar.js +35 -10
  10. package/dist/components/Avatar/Avatar.vue.d.ts +1 -1
  11. package/dist/components/BarrageInput/BarrageInput.vue.d.ts +2 -2
  12. package/dist/components/BarrageInput/BarrageInputH5.js +30 -10
  13. package/dist/components/BarrageInput/BarrageInputH5.vue.d.ts +2 -2
  14. package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +1 -1
  15. package/dist/components/BarrageInput/TextEditor/index.js +13 -5
  16. package/dist/components/BarrageInput/constants.d.ts +3 -0
  17. package/dist/components/BarrageInput/constants.js +6 -0
  18. package/dist/components/BarrageInput/i18n/en-US/index.d.ts +2 -0
  19. package/dist/components/BarrageInput/i18n/en-US/index.js +3 -1
  20. package/dist/components/BarrageInput/i18n/zh-CN/index.d.ts +2 -0
  21. package/dist/components/BarrageInput/i18n/zh-CN/index.js +3 -1
  22. package/dist/components/BarrageInput/index.d.ts +18 -18
  23. package/dist/components/BarrageList/BarrageList.js +5 -6
  24. package/dist/components/BarrageList/BarrageListH5.js +5 -6
  25. package/dist/components/BarrageList/Message/MessageLayout/MessageLayout.js +1 -1
  26. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.js +5 -4
  27. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue.d.ts +2 -2
  28. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.js +7 -4
  29. package/dist/components/BarrageList/Message/TextMessage/TextMessage.js +1 -1
  30. package/dist/components/ChatSetting/ChatSetting.js +8 -11
  31. package/dist/components/ChatSetting/GroupChatSetting/GroupActions/GroupActions.js +2 -1
  32. package/dist/components/ChatSetting/GroupChatSetting/GroupChatSetting.js +2 -1
  33. package/dist/components/ChatSetting/GroupChatSetting/GroupInfo/GroupInfo.js +2 -2
  34. package/dist/components/ChatSetting/GroupChatSetting/GroupManagement/GroupManagement.js +2 -1
  35. package/dist/components/ChatSetting/GroupChatSetting/GroupMembers/GroupMembers.js +2 -2
  36. package/dist/components/ChatSetting/SettingItem/SettingItem.js +116 -89
  37. package/dist/components/ChatSetting/i18n/index.d.ts +191 -1
  38. package/dist/components/ChatSetting/i18n/index.js +3 -4
  39. package/dist/components/ChatSetting/index.js +4 -0
  40. package/dist/components/ContactList/ContactInfo/BlacklistInfo/BlacklistInfo.js +78 -0
  41. package/dist/components/ContactList/ContactInfo/BlacklistInfo/BlacklistInfo.vue.d.ts +33 -0
  42. package/dist/components/ContactList/ContactInfo/BlacklistInfo/index.d.ts +1 -0
  43. package/dist/components/ContactList/ContactInfo/BlacklistInfo/index.js +4 -0
  44. package/dist/components/ContactList/ContactInfo/ContactInfo.js +257 -0
  45. package/dist/components/ContactList/ContactInfo/ContactInfo.vue.d.ts +56 -0
  46. package/dist/components/ContactList/ContactInfo/FriendApplicationInfo/FriendApplicationInfo.js +96 -0
  47. package/dist/components/ContactList/ContactInfo/FriendApplicationInfo/FriendApplicationInfo.vue.d.ts +37 -0
  48. package/dist/components/ContactList/ContactInfo/FriendApplicationInfo/index.d.ts +1 -0
  49. package/dist/components/ContactList/ContactInfo/FriendApplicationInfo/index.js +4 -0
  50. package/dist/components/ContactList/ContactInfo/FriendInfo/FriendInfo.js +228 -0
  51. package/dist/components/ContactList/ContactInfo/FriendInfo/FriendInfo.vue.d.ts +39 -0
  52. package/dist/components/ContactList/ContactInfo/FriendInfo/index.d.ts +1 -0
  53. package/dist/components/ContactList/ContactInfo/FriendInfo/index.js +4 -0
  54. package/dist/components/ContactList/ContactInfo/GroupApplicationInfo/GroupApplicationInfo.js +101 -0
  55. package/dist/components/ContactList/ContactInfo/GroupApplicationInfo/GroupApplicationInfo.vue.d.ts +37 -0
  56. package/dist/components/ContactList/ContactInfo/GroupApplicationInfo/index.d.ts +1 -0
  57. package/dist/components/ContactList/ContactInfo/GroupApplicationInfo/index.js +4 -0
  58. package/dist/components/ContactList/ContactInfo/GroupInfo/GroupInfo.js +154 -0
  59. package/dist/components/ContactList/ContactInfo/GroupInfo/GroupInfo.vue.d.ts +37 -0
  60. package/dist/components/ContactList/ContactInfo/GroupInfo/index.d.ts +1 -0
  61. package/dist/components/ContactList/ContactInfo/GroupInfo/index.js +4 -0
  62. package/dist/components/ContactList/ContactInfo/SearchGroupInfo/SearchGroupInfo.js +141 -0
  63. package/dist/components/ContactList/ContactInfo/SearchGroupInfo/SearchGroupInfo.vue.d.ts +32 -0
  64. package/dist/components/ContactList/ContactInfo/SearchGroupInfo/index.d.ts +1 -0
  65. package/dist/components/ContactList/ContactInfo/SearchGroupInfo/index.js +4 -0
  66. package/dist/components/ContactList/ContactInfo/SearchUserInfo/SearchUserInfo.js +122 -0
  67. package/dist/components/ContactList/ContactInfo/SearchUserInfo/SearchUserInfo.vue.d.ts +33 -0
  68. package/dist/components/ContactList/ContactInfo/SearchUserInfo/index.d.ts +1 -0
  69. package/dist/components/ContactList/ContactInfo/SearchUserInfo/index.js +4 -0
  70. package/dist/components/ContactList/ContactInfo/index.d.ts +8 -0
  71. package/dist/components/ContactList/ContactInfo/index.js +18 -0
  72. package/dist/components/ContactList/ContactList.js +281 -0
  73. package/dist/components/ContactList/ContactList.vue.d.ts +41 -0
  74. package/dist/components/ContactList/ContactListItem/BlacklistItem/BlacklistItem.js +52 -0
  75. package/dist/components/ContactList/ContactListItem/BlacklistItem/BlacklistItem.vue.d.ts +25 -0
  76. package/dist/components/ContactList/ContactListItem/BlacklistItem/index.d.ts +1 -0
  77. package/dist/components/ContactList/ContactListItem/BlacklistItem/index.js +4 -0
  78. package/dist/components/ContactList/ContactListItem/ContactListItem.js +4 -0
  79. package/dist/components/ContactList/ContactListItem/ContactListItem.vue.d.ts +30 -0
  80. package/dist/components/ContactList/ContactListItem/FriendApplicationItem/FriendApplicationItem.js +76 -0
  81. package/dist/components/ContactList/ContactListItem/FriendApplicationItem/FriendApplicationItem.vue.d.ts +27 -0
  82. package/dist/components/ContactList/ContactListItem/FriendApplicationItem/index.d.ts +1 -0
  83. package/dist/components/ContactList/ContactListItem/FriendApplicationItem/index.js +4 -0
  84. package/dist/components/ContactList/ContactListItem/FriendItem/FriendItem.js +53 -0
  85. package/dist/components/ContactList/ContactListItem/FriendItem/FriendItem.vue.d.ts +25 -0
  86. package/dist/components/ContactList/ContactListItem/FriendItem/index.d.ts +1 -0
  87. package/dist/components/ContactList/ContactListItem/FriendItem/index.js +4 -0
  88. package/dist/components/ContactList/ContactListItem/GroupApplicationItem/GroupApplicationItem.js +79 -0
  89. package/dist/components/ContactList/ContactListItem/GroupApplicationItem/GroupApplicationItem.vue.d.ts +27 -0
  90. package/dist/components/ContactList/ContactListItem/GroupApplicationItem/index.d.ts +1 -0
  91. package/dist/components/ContactList/ContactListItem/GroupApplicationItem/index.js +4 -0
  92. package/dist/components/ContactList/ContactListItem/GroupItem/GroupItem.js +52 -0
  93. package/dist/components/ContactList/ContactListItem/GroupItem/GroupItem.vue.d.ts +25 -0
  94. package/dist/components/ContactList/ContactListItem/GroupItem/index.d.ts +1 -0
  95. package/dist/components/ContactList/ContactListItem/GroupItem/index.js +4 -0
  96. package/dist/components/ContactList/ContactListItem/index.d.ts +6 -0
  97. package/dist/components/ContactList/ContactListItem/index.js +95 -0
  98. package/dist/components/ContactList/ContactSearch/ContactSearch.js +85 -0
  99. package/dist/components/ContactList/ContactSearch/ContactSearch.vue.d.ts +8 -0
  100. package/dist/components/ContactList/ContactSearch/index.d.ts +1 -0
  101. package/dist/components/ContactList/ContactSearch/index.js +4 -0
  102. package/dist/components/ContactList/constants/const.d.ts +3 -0
  103. package/dist/components/ContactList/constants/const.js +6 -0
  104. package/dist/components/ContactList/hooks/index.d.ts +1 -0
  105. package/dist/components/ContactList/hooks/index.js +4 -0
  106. package/dist/components/ContactList/hooks/useContactList.d.ts +9 -0
  107. package/dist/components/ContactList/hooks/useContactList.js +18 -0
  108. package/dist/components/ContactList/i18n/en-US.d.ts +77 -0
  109. package/dist/components/ContactList/i18n/en-US.js +80 -0
  110. package/dist/components/ContactList/i18n/index.d.ts +4 -0
  111. package/dist/components/ContactList/i18n/index.js +6 -0
  112. package/dist/components/ContactList/i18n/zh-CN.d.ts +77 -0
  113. package/dist/components/ContactList/i18n/zh-CN.js +80 -0
  114. package/dist/components/ContactList/index.d.ts +310 -0
  115. package/dist/components/ContactList/index.js +16 -0
  116. package/dist/components/ConversationList/ConversationActions/ConversationActions.js +31 -46
  117. package/dist/components/ConversationList/ConversationActions/ConversationActions.vue.d.ts +1 -10
  118. package/dist/components/ConversationList/ConversationCreate/ConversationCreate.js +160 -100
  119. package/dist/components/ConversationList/ConversationCreate/ConversationCreate.vue.d.ts +0 -3
  120. package/dist/components/ConversationList/ConversationCreate/ConversationCreateButton/ConversationCreateButton.js +79 -17
  121. package/dist/components/ConversationList/ConversationCreate/ConversationCreateButton/ConversationCreateButton.vue.d.ts +6 -12
  122. package/dist/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.js +78 -158
  123. package/dist/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.vue.d.ts +5 -4
  124. package/dist/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.js +38 -207
  125. package/dist/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.vue.d.ts +3 -9
  126. package/dist/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.js +35 -23
  127. package/dist/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.vue.d.ts +2 -11
  128. package/dist/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/index.js +1 -2
  129. package/dist/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/type.d.ts +2 -7
  130. package/dist/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/type.js +6 -14
  131. package/dist/components/ConversationList/ConversationCreate/index.d.ts +0 -2
  132. package/dist/components/ConversationList/ConversationCreate/index.js +5 -9
  133. package/dist/components/ConversationList/ConversationList.js +51 -39
  134. package/dist/components/ConversationList/ConversationList.vue.d.ts +654 -1510
  135. package/dist/components/ConversationList/ConversationListContent/ConversationListContent.js +4 -4
  136. package/dist/components/ConversationList/ConversationListContent/ConversationListContent.vue.d.ts +1 -1
  137. package/dist/components/ConversationList/ConversationPlaceHolder/ConversationPlaceHolder.js +2 -2
  138. package/dist/components/ConversationList/ConversationPreview/ConversationPreview.vue.d.ts +596 -1404
  139. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.js +1 -1
  140. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.js +13 -29
  141. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.vue.d.ts +146 -348
  142. package/dist/components/ConversationList/ConversationPreview/index.js +3 -3
  143. package/dist/components/ConversationList/ConversationPreview/utils.js +8 -8
  144. package/dist/components/ConversationList/ConversationSearch/ConversationSearch.js +5 -5
  145. package/dist/components/ConversationList/ConversationSearch/ConversationSearch.vue.d.ts +8 -8
  146. package/dist/components/ConversationList/hooks/useConversation.d.ts +6 -0
  147. package/dist/components/ConversationList/hooks/useConversation.js +20 -0
  148. package/dist/components/ConversationList/hooks/useConversationCreate.d.ts +5 -0
  149. package/dist/components/ConversationList/hooks/useConversationCreate.js +24 -0
  150. package/dist/components/ConversationList/i18n/en-US.d.ts +16 -0
  151. package/dist/components/ConversationList/i18n/en-US.js +25 -7
  152. package/dist/components/ConversationList/i18n/zh-CN.d.ts +16 -0
  153. package/dist/components/ConversationList/i18n/zh-CN.js +24 -6
  154. package/dist/components/ConversationList/index.d.ts +2096 -4595
  155. package/dist/components/{LiveStreamView → LiveCoreView}/DefaultStreamViewUI.js +1 -1
  156. package/dist/components/LiveCoreView/index.d.ts +4 -0
  157. package/dist/components/{LiveStreamView → LiveCoreView}/index.js +68 -74
  158. package/dist/components/LiveList/LiveList.js +71 -45
  159. package/dist/components/LiveList/LiveListH5.js +14 -15
  160. package/dist/components/LiveScenePanel/CameraSettingDialog.js +1 -2
  161. package/dist/components/LiveScenePanel/icons/AddIcon.js +2 -2
  162. package/dist/components/LiveScenePanel/icons/CameraIcon.js +2 -2
  163. package/dist/components/LiveScenePanel/icons/CameraMirror.js +2 -2
  164. package/dist/components/LiveScenePanel/icons/CameraUnmirror.js +2 -2
  165. package/dist/components/LiveScenePanel/icons/ImageIcon.js +2 -2
  166. package/dist/components/LiveScenePanel/icons/MoreIcon.js +2 -2
  167. package/dist/components/LiveScenePanel/icons/ScreenIcon.js +2 -2
  168. package/dist/components/MessageInput/AttachmentPicker/index.js +1 -1
  169. package/dist/components/MessageInput/EmojiPicker/EmojiPicker.js +1 -1
  170. package/dist/components/MessageInput/MessageInput.js +1 -1
  171. package/dist/components/MessageInput/QuotedMessagePreview/index.js +2 -2
  172. package/dist/components/MessageInput/SendButton/index.js +1 -1
  173. package/dist/components/MessageInput/TextEditor/index.js +6 -5
  174. package/dist/components/MessageInput/i18n/index.d.ts +24 -1
  175. package/dist/components/MessageInput/i18n/index.js +7 -8
  176. package/dist/components/MessageInput/index.d.ts +409 -6
  177. package/dist/components/MessageInput/index.js +23 -125
  178. package/dist/components/MessageList/Message/AudioMessage/PlayButton.js +3 -3
  179. package/dist/components/MessageList/Message/ImageMessage/ImageMessage.js +2 -2
  180. package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.js +3 -3
  181. package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.vue.d.ts +5 -5
  182. package/dist/components/MessageList/Message/MessageLayout/MessageLayout.js +1 -1
  183. package/dist/components/MessageList/Message/MessageLayout/MessageMeta/MessageMeta.js +34 -30
  184. package/dist/components/MessageList/Message/MessageLayout/MessageMeta/MessageMeta.vue.d.ts +0 -10
  185. package/dist/components/MessageList/MessageForward/MessageForward.js +4 -4
  186. package/dist/components/MessageList/MessageList.js +66 -60
  187. package/dist/components/MessageList/MessageList.vue.d.ts +3 -3
  188. package/dist/components/MessageList/ScrollToBottom/ScrollToBottom.js +32 -0
  189. package/dist/components/MessageList/ScrollToBottom/ScrollToBottom.vue.d.ts +6 -0
  190. package/dist/components/MessageList/ScrollToBottom/index.d.ts +3 -0
  191. package/dist/components/MessageList/ScrollToBottom/index.js +4 -0
  192. package/dist/components/MessageList/i18n/en-US.d.ts +5 -0
  193. package/dist/components/MessageList/i18n/en-US.js +6 -1
  194. package/dist/components/MessageList/i18n/index.d.ts +85 -1
  195. package/dist/components/MessageList/i18n/index.js +7 -8
  196. package/dist/components/MessageList/i18n/zh-CN.d.ts +5 -0
  197. package/dist/components/MessageList/i18n/zh-CN.js +6 -1
  198. package/dist/components/MessageList/index.js +4 -0
  199. package/dist/components/Search/Search.js +4 -4
  200. package/dist/components/Search/Search.vue.d.ts +4 -4
  201. package/dist/components/Search/SearchAdvanced/DateRangePicker/DateRangePicker.js +15 -9
  202. package/dist/components/Search/SearchAdvanced/MessageAdvanced/MessageAdvanced.js +12 -7
  203. package/dist/components/Search/SearchAdvanced/SearchAdvanced.js +2 -2
  204. package/dist/components/Search/SearchAdvanced/SearchTab/SearchTab.js +10 -5
  205. package/dist/components/Search/SearchAdvanced/UserAdvanced/UserAdvanced.js +10 -10
  206. package/dist/components/Search/SearchBar/SearchBar.js +3 -2
  207. package/dist/components/Search/SearchResults/EmptyResult/EmptyResult.js +1 -1
  208. package/dist/components/Search/SearchResults/SearchResults.js +82 -69
  209. package/dist/components/Search/SearchResults/SearchResultsItem/Conversation/Conversation.js +8 -8
  210. package/dist/components/Search/SearchResults/SearchResultsItem/utils/highlightText.d.ts +5 -6
  211. package/dist/components/Search/i18n/en-US/Search.js +9 -9
  212. package/dist/components/Search/i18n/zh-CN/Search.js +13 -13
  213. package/dist/components/Search/index.d.ts +6 -6
  214. package/dist/components/StreamMixer/LocalMixer/MixerControl.js +14 -10
  215. package/dist/components/StreamMixer/LocalMixer/index.js +81 -56
  216. package/dist/components/StreamMixer/icons/CameraMirror.js +2 -2
  217. package/dist/components/StreamMixer/icons/Delete.js +2 -2
  218. package/dist/components/StreamMixer/icons/Down.js +2 -2
  219. package/dist/components/StreamMixer/icons/Rotation.js +2 -2
  220. package/dist/components/StreamMixer/icons/Up.js +2 -2
  221. package/dist/components/StreamMixer/index.js +2 -2
  222. package/dist/components/StreamView/common/StreamCover/index.js +2 -2
  223. package/dist/components/UserPicker/components/TreeMode/TreeNode.js +2 -2
  224. package/dist/components/UserPicker/i18n/index.d.ts +15 -1
  225. package/dist/components/UserPicker/i18n/index.js +3 -4
  226. package/dist/components/UserPicker/index.d.ts +0 -1
  227. package/dist/components/UserPicker/index.js +6 -3
  228. package/dist/components/VideoSettingPanel/VideoPreview.js +3 -4
  229. package/dist/components/VideoSettingPanel/VideoProfile.js +3 -4
  230. package/dist/components/VideoSettingPanel/i18n/en-US/index.d.ts +5 -0
  231. package/dist/components/VideoSettingPanel/i18n/en-US/index.js +8 -3
  232. package/dist/components/VideoSettingPanel/i18n/zh-CN/index.d.ts +5 -0
  233. package/dist/components/VideoSettingPanel/i18n/zh-CN/index.js +8 -3
  234. package/dist/components/VideoSettingPanel/index.js +3 -3
  235. package/dist/hooks/useLongPress.d.ts +4 -4
  236. package/dist/hooks/useMessageActions.js +5 -5
  237. package/dist/hooks/useMouseHover.d.ts +7 -5
  238. package/dist/hooks/useMouseHover.js +3 -1
  239. package/dist/index.js +12 -6
  240. package/dist/rtc/index.d.ts +22 -20
  241. package/dist/rtc/index.js +6 -3
  242. package/dist/states/BarrageListState/BarrageListState.js +3 -2
  243. package/dist/states/CoHostState.d.ts +1 -1
  244. package/dist/states/CoHostState.js +59 -62
  245. package/dist/states/ContactListState/ContactListState.d.ts +16 -16
  246. package/dist/states/ContactListState/ContactListState.js +20 -20
  247. package/dist/states/ConversationListState/ConversationListState.d.ts +13 -12
  248. package/dist/states/ConversationListState/ConversationListState.js +19 -19
  249. package/dist/states/LiveSeatState/seatEventManager.js +3 -5
  250. package/dist/states/LiveSeatState/usePlayStream/MixStreamPlayer.js +9 -0
  251. package/dist/states/LiveState/index.d.ts +4 -4
  252. package/dist/states/LiveState/index.js +4 -2
  253. package/dist/states/LoginState.js +1 -3
  254. package/dist/states/MessageInputState/MessageInputState.js +18 -18
  255. package/dist/states/SearchState.d.ts +2 -2
  256. package/dist/states/SearchState.js +124 -127
  257. package/dist/styles/index.css +1954 -1070
  258. package/dist/types/contact.d.ts +145 -9
  259. package/dist/types/conversation.d.ts +36 -28
  260. package/dist/types/conversation.js +22 -0
  261. package/dist/types/index.js +5 -3
  262. package/dist/types/live.d.ts +2 -3
  263. package/dist/types/types.d.ts +0 -8
  264. package/dist/types/types.js +0 -10
  265. package/dist/utils/time.d.ts +2 -2
  266. package/dist/utils/time.js +253 -1471
  267. package/package.json +23 -5
  268. package/src/baseComp/View/View.vue +1 -2
  269. package/src/baseComp/index.ts +1 -2
  270. package/src/chat/index.ts +11 -0
  271. package/src/components/Avatar/Avatar.vue +12 -11
  272. package/src/components/BarrageInput/BarrageInputH5.vue +36 -9
  273. package/src/components/BarrageInput/TextEditor/TextEditor.vue +13 -5
  274. package/src/components/BarrageInput/constants.ts +3 -0
  275. package/src/components/BarrageInput/i18n/en-US/index.ts +2 -0
  276. package/src/components/BarrageInput/i18n/zh-CN/index.ts +2 -0
  277. package/src/components/BarrageList/BarrageList.vue +2 -2
  278. package/src/components/BarrageList/BarrageListH5.vue +2 -2
  279. package/src/components/BarrageList/Message/MessageLayout/MessageLayout.vue +0 -1
  280. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +5 -2
  281. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue +7 -3
  282. package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +3 -3
  283. package/src/components/ChatSetting/ChatSetting.vue +6 -10
  284. package/src/components/ChatSetting/GroupChatSetting/GroupInfo/GroupInfo.vue +1 -1
  285. package/src/components/ChatSetting/SettingItem/SettingItem.vue +40 -36
  286. package/src/components/ChatSetting/i18n/index.ts +3 -5
  287. package/src/components/ChatSetting/index.ts +5 -1
  288. package/src/components/ContactList/ContactInfo/BlacklistInfo/BlacklistInfo.scss +50 -0
  289. package/src/components/ContactList/ContactInfo/BlacklistInfo/BlacklistInfo.vue +71 -0
  290. package/src/components/ContactList/ContactInfo/BlacklistInfo/index.ts +1 -0
  291. package/src/components/ContactList/ContactInfo/ContactInfo.scss +33 -0
  292. package/src/components/ContactList/ContactInfo/ContactInfo.vue +256 -0
  293. package/src/components/ContactList/ContactInfo/FriendApplicationInfo/FriendApplicationInfo.scss +82 -0
  294. package/src/components/ContactList/ContactInfo/FriendApplicationInfo/FriendApplicationInfo.vue +88 -0
  295. package/src/components/ContactList/ContactInfo/FriendApplicationInfo/index.ts +1 -0
  296. package/src/components/ContactList/ContactInfo/FriendInfo/FriendInfo.scss +92 -0
  297. package/src/components/ContactList/ContactInfo/FriendInfo/FriendInfo.vue +219 -0
  298. package/src/components/ContactList/ContactInfo/FriendInfo/index.ts +1 -0
  299. package/src/components/ContactList/ContactInfo/GroupApplicationInfo/GroupApplicationInfo.scss +82 -0
  300. package/src/components/ContactList/ContactInfo/GroupApplicationInfo/GroupApplicationInfo.vue +99 -0
  301. package/src/components/ContactList/ContactInfo/GroupApplicationInfo/index.ts +1 -0
  302. package/src/components/ContactList/ContactInfo/GroupInfo/GroupInfo.scss +52 -0
  303. package/src/components/ContactList/ContactInfo/GroupInfo/GroupInfo.vue +146 -0
  304. package/src/components/ContactList/ContactInfo/GroupInfo/index.ts +1 -0
  305. package/src/components/ContactList/ContactInfo/SearchGroupInfo/SearchGroupInfo.scss +111 -0
  306. package/src/components/ContactList/ContactInfo/SearchGroupInfo/SearchGroupInfo.vue +147 -0
  307. package/src/components/ContactList/ContactInfo/SearchGroupInfo/index.ts +1 -0
  308. package/src/components/ContactList/ContactInfo/SearchUserInfo/SearchUserInfo.scss +111 -0
  309. package/src/components/ContactList/ContactInfo/SearchUserInfo/SearchUserInfo.vue +128 -0
  310. package/src/components/ContactList/ContactInfo/SearchUserInfo/index.ts +1 -0
  311. package/src/components/ContactList/ContactInfo/index.ts +8 -0
  312. package/src/components/ContactList/ContactList.scss +124 -0
  313. package/src/components/ContactList/ContactList.vue +299 -0
  314. package/src/components/ContactList/ContactListItem/BlacklistItem/BlacklistItem.scss +39 -0
  315. package/src/components/ContactList/ContactListItem/BlacklistItem/BlacklistItem.vue +47 -0
  316. package/src/components/ContactList/ContactListItem/BlacklistItem/index.ts +1 -0
  317. package/src/components/ContactList/ContactListItem/ContactListItem.vue +98 -0
  318. package/src/components/ContactList/ContactListItem/FriendApplicationItem/FriendApplicationItem.scss +58 -0
  319. package/src/components/ContactList/ContactListItem/FriendApplicationItem/FriendApplicationItem.vue +70 -0
  320. package/src/components/ContactList/ContactListItem/FriendApplicationItem/index.ts +1 -0
  321. package/src/components/ContactList/ContactListItem/FriendItem/FriendItem.scss +39 -0
  322. package/src/components/ContactList/ContactListItem/FriendItem/FriendItem.vue +47 -0
  323. package/src/components/ContactList/ContactListItem/FriendItem/index.ts +1 -0
  324. package/src/components/ContactList/ContactListItem/GroupApplicationItem/GroupApplicationItem.scss +57 -0
  325. package/src/components/ContactList/ContactListItem/GroupApplicationItem/GroupApplicationItem.vue +78 -0
  326. package/src/components/ContactList/ContactListItem/GroupApplicationItem/index.ts +1 -0
  327. package/src/components/ContactList/ContactListItem/GroupItem/GroupItem.scss +39 -0
  328. package/src/components/ContactList/ContactListItem/GroupItem/GroupItem.vue +47 -0
  329. package/src/components/ContactList/ContactListItem/GroupItem/index.ts +1 -0
  330. package/src/components/ContactList/ContactListItem/index.ts +6 -0
  331. package/src/components/ContactList/ContactSearch/ContactSearch.scss +58 -0
  332. package/src/components/ContactList/ContactSearch/ContactSearch.vue +98 -0
  333. package/src/components/ContactList/ContactSearch/index.ts +1 -0
  334. package/src/components/ContactList/constants/const.ts +7 -0
  335. package/src/components/ContactList/hooks/index.ts +1 -0
  336. package/src/components/ContactList/hooks/useContactList.ts +21 -0
  337. package/src/components/ContactList/i18n/en-US.ts +77 -0
  338. package/src/components/ContactList/i18n/index.ts +4 -0
  339. package/src/components/ContactList/i18n/zh-CN.ts +77 -0
  340. package/src/components/ContactList/index.ts +18 -0
  341. package/src/components/ConversationList/ConversationActions/ConversationActions.scss +34 -35
  342. package/src/components/ConversationList/ConversationActions/ConversationActions.vue +15 -29
  343. package/src/components/ConversationList/ConversationCreate/ConversationCreate.scss +11 -37
  344. package/src/components/ConversationList/ConversationCreate/ConversationCreate.vue +154 -69
  345. package/src/components/ConversationList/ConversationCreate/ConversationCreateButton/ConversationCreateButton.scss +37 -1
  346. package/src/components/ConversationList/ConversationCreate/ConversationCreateButton/ConversationCreateButton.vue +70 -15
  347. package/src/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.scss +19 -66
  348. package/src/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.vue +72 -139
  349. package/src/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.scss +5 -129
  350. package/src/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.vue +42 -183
  351. package/src/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.scss +14 -11
  352. package/src/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.vue +23 -18
  353. package/src/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/type.ts +2 -8
  354. package/src/components/ConversationList/ConversationCreate/index.ts +0 -2
  355. package/src/components/ConversationList/ConversationList.scss +1 -0
  356. package/src/components/ConversationList/ConversationList.vue +44 -25
  357. package/src/components/ConversationList/ConversationListContent/ConversationListContent.scss +2 -5
  358. package/src/components/ConversationList/ConversationPlaceHolder/ConversationPlaceHolder.vue +2 -2
  359. package/src/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.vue +1 -1
  360. package/src/components/ConversationList/ConversationPreview/ConversationPreviewUI.vue +6 -19
  361. package/src/components/ConversationList/ConversationPreview/utils.ts +11 -11
  362. package/src/components/ConversationList/hooks/useConversation.ts +21 -0
  363. package/src/components/ConversationList/hooks/useConversationCreate.ts +29 -0
  364. package/src/components/ConversationList/i18n/en-US.ts +26 -6
  365. package/src/components/ConversationList/i18n/zh-CN.ts +25 -5
  366. package/src/components/{LiveStreamView → LiveCoreView}/index.ts +4 -3
  367. package/src/components/{LiveStreamView → LiveCoreView}/index.vue +109 -88
  368. package/src/components/LiveList/LiveList.vue +94 -38
  369. package/src/components/LiveList/LiveListH5.vue +47 -23
  370. package/src/components/MessageInput/MessageInput.module.scss +1 -1
  371. package/src/components/MessageInput/QuotedMessagePreview/QuotedMessagePreview.vue +2 -2
  372. package/src/components/MessageInput/SendButton/SendButton.vue +1 -1
  373. package/src/components/MessageInput/TextEditor/Editor.scss +3 -2
  374. package/src/components/MessageInput/TextEditor/TextEditor.module.scss +1 -0
  375. package/src/components/MessageInput/TextEditor/TextEditor.vue +2 -0
  376. package/src/components/MessageInput/i18n/index.ts +1 -7
  377. package/src/components/MessageInput/index.ts +25 -8
  378. package/src/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.vue +4 -4
  379. package/src/components/MessageList/Message/MessageLayout/MessageLayout.vue +0 -1
  380. package/src/components/MessageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +16 -17
  381. package/src/components/MessageList/MessageForward/MessageForward.vue +2 -2
  382. package/src/components/MessageList/MessageList.vue +21 -5
  383. package/src/components/MessageList/ScrollToBottom/ScrollToBottom.vue +50 -0
  384. package/src/components/MessageList/ScrollToBottom/index.ts +5 -0
  385. package/src/components/MessageList/i18n/en-US.ts +5 -0
  386. package/src/components/MessageList/i18n/index.ts +1 -5
  387. package/src/components/MessageList/i18n/zh-CN.ts +5 -0
  388. package/src/components/MessageList/index.ts +4 -1
  389. package/src/components/Search/Search.vue +0 -4
  390. package/src/components/Search/SearchAdvanced/DateRangePicker/DateRangePicker.vue +125 -38
  391. package/src/components/Search/SearchAdvanced/MessageAdvanced/MessageAdvanced.vue +24 -16
  392. package/src/components/Search/SearchAdvanced/SearchAdvanced.vue +9 -7
  393. package/src/components/Search/SearchAdvanced/SearchTab/SearchTab.vue +4 -3
  394. package/src/components/Search/SearchAdvanced/UserAdvanced/UserAdvanced.scss +0 -1
  395. package/src/components/Search/SearchAdvanced/UserAdvanced/UserAdvanced.vue +57 -23
  396. package/src/components/Search/SearchBar/SearchBar.scss +0 -2
  397. package/src/components/Search/SearchBar/SearchBar.vue +7 -5
  398. package/src/components/Search/SearchResults/EmptyResult/EmptyResult.vue +4 -2
  399. package/src/components/Search/SearchResults/SearchResults.scss +5 -11
  400. package/src/components/Search/SearchResults/SearchResults.vue +25 -29
  401. package/src/components/Search/SearchResults/SearchResultsItem/Conversation/Conversation.scss +1 -9
  402. package/src/components/Search/SearchResults/SearchResultsItem/utils/highlightText.ts +15 -16
  403. package/src/components/Search/i18n/en-US/Search.ts +9 -9
  404. package/src/components/Search/i18n/zh-CN/Search.ts +13 -13
  405. package/src/components/StreamMixer/LocalMixer/MixerControl.vue +20 -15
  406. package/src/components/StreamMixer/LocalMixer/index.vue +130 -57
  407. package/src/components/StreamMixer/index.vue +3 -3
  408. package/src/components/UserPicker/i18n/index.ts +1 -5
  409. package/src/components/UserPicker/index.ts +4 -3
  410. package/src/components/VideoSettingPanel/VideoPreview.vue +13 -8
  411. package/src/components/VideoSettingPanel/VideoProfile.vue +5 -5
  412. package/src/components/VideoSettingPanel/i18n/en-US/index.ts +8 -3
  413. package/src/components/VideoSettingPanel/i18n/zh-CN/index.ts +8 -3
  414. package/src/components/VideoSettingPanel/index.vue +15 -9
  415. package/src/hooks/useLongPress.ts +7 -18
  416. package/src/hooks/useMessageActions.ts +5 -5
  417. package/src/hooks/useMouseHover.ts +9 -7
  418. package/src/rtc/index.ts +6 -3
  419. package/src/types/contact.ts +175 -12
  420. package/src/types/conversation.ts +42 -32
  421. package/src/types/live.ts +3 -5
  422. package/src/types/types.ts +0 -28
  423. package/src/utils/time.ts +8 -10
  424. package/dist/baseComp/Popup/Popup.js +0 -132
  425. package/dist/baseComp/Popup/Popup.vue.d.ts +0 -54
  426. package/dist/baseComp/Popup/index.d.ts +0 -2
  427. package/dist/baseComp/Popup/index.js +0 -4
  428. package/dist/components/ConversationList/ConversationCreate/ConversationCreateSelectView/ConversationCreateSelectView.js +0 -65
  429. package/dist/components/ConversationList/ConversationCreate/ConversationCreateSelectView/ConversationCreateSelectView.vue.d.ts +0 -17
  430. package/dist/components/ConversationList/ConversationCreate/ConversationCreateSelectView/index.d.ts +0 -1
  431. package/dist/components/ConversationList/ConversationCreate/ConversationCreateSelectView/index.js +0 -4
  432. package/dist/components/ConversationList/ConversationCreate/hooks/useConversationCreate.d.ts +0 -9
  433. package/dist/components/ConversationList/ConversationCreate/hooks/useConversationCreate.js +0 -96
  434. package/dist/components/ConversationList/ConversationCreate/static/word.d.ts +0 -6
  435. package/dist/components/ConversationList/ConversationCreate/static/word.js +0 -4
  436. package/dist/components/LiveStreamView/index.d.ts +0 -4
  437. package/src/baseComp/Popup/Popup.vue +0 -156
  438. package/src/baseComp/Popup/index.ts +0 -2
  439. package/src/components/ConversationList/ConversationCreate/ConversationCreateSelectView/ConversationCreateSelectView.scss +0 -36
  440. package/src/components/ConversationList/ConversationCreate/ConversationCreateSelectView/ConversationCreateSelectView.vue +0 -44
  441. package/src/components/ConversationList/ConversationCreate/ConversationCreateSelectView/index.ts +0 -1
  442. package/src/components/ConversationList/ConversationCreate/hooks/useConversationCreate.ts +0 -132
  443. package/src/components/ConversationList/ConversationCreate/static/word.ts +0 -300
  444. /package/dist/components/{LiveStreamView → LiveCoreView}/DefaultStreamViewUI.vue.d.ts +0 -0
  445. /package/dist/components/{LiveStreamView → LiveCoreView}/i18n/en-US/index.d.ts +0 -0
  446. /package/dist/components/{LiveStreamView → LiveCoreView}/i18n/en-US/index.js +0 -0
  447. /package/dist/components/{LiveStreamView → LiveCoreView}/i18n/index.d.ts +0 -0
  448. /package/dist/components/{LiveStreamView → LiveCoreView}/i18n/index.js +0 -0
  449. /package/dist/components/{LiveStreamView → LiveCoreView}/i18n/zh-CN/index.d.ts +0 -0
  450. /package/dist/components/{LiveStreamView → LiveCoreView}/i18n/zh-CN/index.js +0 -0
  451. /package/dist/components/{LiveStreamView → LiveCoreView}/index.vue.d.ts +0 -0
  452. /package/src/components/{LiveStreamView → LiveCoreView}/DefaultStreamViewUI.vue +0 -0
  453. /package/src/components/{LiveStreamView → LiveCoreView}/i18n/en-US/index.ts +0 -0
  454. /package/src/components/{LiveStreamView → LiveCoreView}/i18n/index.ts +0 -0
  455. /package/src/components/{LiveStreamView → LiveCoreView}/i18n/zh-CN/index.ts +0 -0
@@ -1,16 +1,16 @@
1
1
  /**
2
- * 转义正则表达式中的特殊字符
3
- * @param string - 需要转义的字符串
4
- * @returns 转义后的字符串
2
+ * trims and escapes a string for use in a regular expression
3
+ * @param string - string to trim and escape
4
+ * @returns string with trimmed and escaped characters
5
5
  */
6
6
  function escapeRegExp(string: string): string {
7
7
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
8
8
  }
9
9
 
10
10
  /**
11
- * 转义HTML特殊字符,防止XSS攻击
12
- * @param text - 需要转义的文本
13
- * @returns 转义后的文本
11
+ * Escape HTML special characters to prevent XSS attacks
12
+ * @param text - string to escape
13
+ * @returns escaped string
14
14
  */
15
15
  function sanitizeInput(text: string): string {
16
16
  if (!text || typeof text !== 'string') {
@@ -23,25 +23,24 @@ function sanitizeInput(text: string): string {
23
23
  }
24
24
 
25
25
  /**
26
- * 文本高亮工具函数
27
- * 用于在搜索结果中高亮显示关键词
28
- * @param text - 原始文本
29
- * @param keyword - 要高亮的关键词
30
- * @param className - 高亮元素的CSS类名,默认为'highlight'
31
- * @returns 包含高亮标记的HTML字符串
26
+ * Highlights a keyword in a given text
27
+ * @param text - text to highlight
28
+ * @param keyword - keyword to highlight
29
+ * @param className - CSS class name for the highlight, default is 'highlight'
30
+ * @returns HTML string with highlighted text
32
31
  */
33
32
  export const highlightText = (
34
33
  text: string,
35
34
  keyword: string,
36
- className: string = 'highlight'
35
+ className = 'highlight',
37
36
  ): string => {
38
37
  const safeText = sanitizeInput(text);
39
38
  const safeKeyword = sanitizeInput(keyword);
40
-
39
+
41
40
  if (!text || typeof text !== 'string') {
42
41
  return safeText;
43
42
  }
44
-
43
+
45
44
  if (!safeKeyword || typeof safeKeyword !== 'string') {
46
45
  return safeText;
47
46
  }
@@ -73,4 +72,4 @@ export const highlightText = (
73
72
  }
74
73
  };
75
74
 
76
- export default highlightText;
75
+ export default highlightText;
@@ -1,5 +1,5 @@
1
1
  export const Search = {
2
- // 基础操作
2
+ // actions
3
3
  'action.search': 'Search',
4
4
  'action.cancel': 'Cancel',
5
5
  'action.confirm': 'Confirm',
@@ -8,39 +8,39 @@ export const Search = {
8
8
  'action.readMore': 'Read More',
9
9
  'action.filter': 'Filter',
10
10
 
11
- // 搜索类型
11
+ // types
12
12
  'type.all': 'All',
13
13
  'type.messages': 'Messages',
14
14
  'type.users': 'Users',
15
15
  'type.groups': 'Groups',
16
16
 
17
- // 输入提示
17
+ // input
18
18
  'input.placeholder.keywords': 'Please enter keywords to search',
19
19
  'input.selectTime': 'Select Time',
20
20
 
21
- // 加载状态
21
+ // status
22
22
  'status.loading': 'Loading...',
23
23
  'status.noContent': 'No Content',
24
24
 
25
- // 加载更多
25
+ // loading
26
26
  'loadMore.default': 'Load More',
27
27
  'loadMore.messages': 'Load More Messages',
28
28
  'loadMore.users': 'Load More Users',
29
29
  'loadMore.groups': 'Load More Groups',
30
30
 
31
- // 搜索结果
31
+ // results
32
32
  'results.title': 'Search Messages',
33
33
  'results.relatedTo': '{{count}} texts related to',
34
34
  'results.relatedToSuffix': 'related texts',
35
35
  'results.foundMessages': 'Found {{count}} messages',
36
36
 
37
- // 消息类型
37
+ // message types
38
38
  'messageType.image': 'Image Message',
39
39
  'messageType.videoCover': 'Video Cover',
40
40
  'messageType.custom': 'Custom Message',
41
41
  'messageType.unsupported': 'Unsupported Message Type',
42
42
 
43
- // 用户筛选
43
+ // filter
44
44
  'filter.title': 'Filter Users',
45
45
  'filter.gender': 'Gender',
46
46
  'filter.age': 'Age',
@@ -50,7 +50,7 @@ export const Search = {
50
50
  'filter.gender.secret': 'Secret',
51
51
  'filter.age.yearsOld': 'years old',
52
52
 
53
- // 时间筛选
53
+ // time filter
54
54
  'timeFilter.allTime': 'All Time',
55
55
  'timeFilter.today': 'Today',
56
56
  'timeFilter.last3Days': 'Last 3 Days',
@@ -1,5 +1,5 @@
1
1
  export const Search = {
2
- // 基础操作
2
+ // actions
3
3
  'action.search': '搜索',
4
4
  'action.cancel': '取消',
5
5
  'action.confirm': '确定',
@@ -8,39 +8,39 @@ export const Search = {
8
8
  'action.readMore': '查看更多',
9
9
  'action.filter': '筛选',
10
10
 
11
- // 搜索类型
11
+ // types
12
12
  'type.all': '全部',
13
13
  'type.messages': '消息',
14
14
  'type.users': '用户',
15
15
  'type.groups': '群组',
16
16
 
17
- // 输入提示
17
+ // input
18
18
  'input.placeholder.keywords': '请输入关键词搜索',
19
19
  'input.selectTime': '选择时间',
20
20
 
21
- // 加载状态
21
+ // status
22
22
  'status.loading': '加载中...',
23
23
  'status.noContent': '暂无内容',
24
24
 
25
- // 加载更多
25
+ // loading
26
26
  'loadMore.default': '加载更多',
27
27
  'loadMore.messages': '加载更多消息',
28
28
  'loadMore.users': '加载更多用户',
29
29
  'loadMore.groups': '加载更多群组',
30
30
 
31
- // 搜索结果
31
+ // results
32
32
  'results.title': '搜索消息',
33
- 'results.relatedTo': '{{count}}条与',
33
+ 'results.relatedTo': '{{count}} 条与',
34
34
  'results.relatedToSuffix': '的消息',
35
- 'results.foundMessages': '发现{{count}}条消息',
35
+ 'results.foundMessages': '发现 {{count}} 条消息',
36
36
 
37
- // 消息类型
37
+ // message types
38
38
  'messageType.image': '图片消息',
39
39
  'messageType.videoCover': '视频封面',
40
40
  'messageType.custom': '自定义消息',
41
41
  'messageType.unsupported': '不支持的消息类型',
42
42
 
43
- // 用户筛选
43
+ // filter
44
44
  'filter.title': '筛选用户',
45
45
  'filter.gender': '性别',
46
46
  'filter.age': '年龄',
@@ -50,11 +50,11 @@ export const Search = {
50
50
  'filter.gender.secret': '保密',
51
51
  'filter.age.yearsOld': '岁',
52
52
 
53
- // 时间筛选
53
+ // time filter
54
54
  'timeFilter.allTime': '全部时间',
55
55
  'timeFilter.today': '今天',
56
- 'timeFilter.last3Days': '最近3天',
57
- 'timeFilter.last7Days': '最近7天',
56
+ 'timeFilter.last3Days': '最近 3 天',
57
+ 'timeFilter.last7Days': '最近 7 天',
58
58
  };
59
59
 
60
60
  export default Search;
@@ -1,15 +1,22 @@
1
1
  <template>
2
- <div class="mixer-control" @mousedown="handleMouseDown">
2
+ <div
3
+ class="mixer-control"
4
+ @mousedown="handleMouseDown"
5
+ >
3
6
  <div
4
- class="mixer-control-item"
5
7
  v-for="control in controlList"
6
- :class="{ 'disable': control.disable }"
7
8
  :key="control.name"
9
+ class="mixer-control-item"
10
+ :class="{ 'disable': control.disable }"
8
11
  :style="control.style"
9
12
  @click.stop="control.onClick"
10
13
  >
11
14
  <div class="mixer-control-item-icon">
12
- <component :is="control.icon" style="width: 100%; height: 100%" :style="control.style" />
15
+ <component
16
+ :is="control.icon"
17
+ style="width: 100%; height: 100%"
18
+ :style="control.style"
19
+ />
13
20
  </div>
14
21
  <span class="mixer-control-item-name">{{ control.text }}</span>
15
22
  </div>
@@ -17,16 +24,16 @@
17
24
  </template>
18
25
 
19
26
  <script setup lang="ts">
27
+ import { computed } from 'vue';
28
+ import { TRTCVideoMirrorType, TRTCVideoRotation } from '@tencentcloud/tuiroom-engine-js';
29
+ import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
30
+ import { useVideoMixerState } from '../../../states/VideoMixerState';
20
31
  import CameraMirror from '../icons/CameraMirror.vue';
21
32
  import Delete from '../icons/Delete.vue';
33
+ import Down from '../icons/Down.vue';
22
34
  import Rotation from '../icons/Rotation.vue';
23
35
  import Up from '../icons/Up.vue';
24
- import Down from '../icons/Down.vue';
25
- import { useVideoMixerState } from '../../../states/VideoMixerState';
26
- import { TRTCVideoMirrorType, TRTCVideoRotation } from '@tencentcloud/tuiroom-engine-js';
27
- import { computed, reactive } from 'vue';
28
- import { MediaSource } from '../../../types';
29
- import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
36
+ import type { MediaSource } from '../../../types';
30
37
 
31
38
  const { activeMediaSource, mediaSourceList, updateMediaSource, removeMediaSource } = useVideoMixerState();
32
39
  const { t } = useUIKit();
@@ -35,12 +42,10 @@ function handleMouseDown(event: Event) {
35
42
  event.stopPropagation();
36
43
  }
37
44
 
38
- const orderMediaSourceList = computed(() => {
39
- return [...mediaSourceList.value].sort((a: MediaSource, b: MediaSource) => a.layout.zOrder - b.layout.zOrder);
40
- });
45
+ const orderMediaSourceList = computed(() => [...mediaSourceList.value].sort((a: MediaSource, b: MediaSource) => a.layout.zOrder - b.layout.zOrder));
41
46
 
42
- const isActiveMediaSourceTop = computed(() => activeMediaSource.value.id === orderMediaSourceList.value[0].id);
43
- const isActiveMediaSourceBottom = computed(() => activeMediaSource.value.id === orderMediaSourceList.value[orderMediaSourceList.value.length - 1].id);
47
+ const isActiveMediaSourceTop = computed(() => activeMediaSource.value?.id === orderMediaSourceList.value[0]?.id);
48
+ const isActiveMediaSourceBottom = computed(() => activeMediaSource.value?.id === orderMediaSourceList.value[orderMediaSourceList.value.length - 1]?.id);
44
49
 
45
50
  const controlList = computed(() => [
46
51
  {
@@ -1,37 +1,51 @@
1
1
  <template>
2
- <div class="local-mixer-container" ref="localMixerRef">
3
- <div class="local-mixer-content" id="local-video-mixer"></div>
4
- <div class="mixer-control-container" v-if="activeMediaSource" :style="mixControlContainerStyle">
5
- <MixerControl class="mixer-control" :style="mixControlStyle" />
6
- </div>
7
- <div class="local-mixer-placeholder" v-if="mediaSourceList.length === 0">
2
+ <div
3
+ ref="localMixerRef"
4
+ class="local-mixer-container"
5
+ >
6
+ <div
7
+ id="local-video-mixer"
8
+ class="local-mixer-content"
9
+ />
10
+ <MixerControl
11
+ v-if="activeMediaSource"
12
+ ref="mixControlRef"
13
+ class="mixer-control"
14
+ :style="mixControlStyle"
15
+ />
16
+ <div
17
+ v-if="mediaSourceList.length === 0"
18
+ class="local-mixer-placeholder"
19
+ >
8
20
  <span class="placeholder-text">{{ t('No video') }}</span>
9
21
  </div>
10
22
  </div>
11
23
  </template>
12
24
 
13
25
  <script setup lang="ts">
14
- import { ref, onMounted, watch, onUnmounted, Ref, computed } from 'vue';
15
- import { useRoomEngine } from '../../../hooks/useRoomEngine';
16
- import { useVideoMixerState } from '../../../states/VideoMixerState';
26
+ import type { Ref } from 'vue';
27
+ import { ref, onMounted, watch, onUnmounted, computed, nextTick } from 'vue';
17
28
  import TUIRoomEngine, {
18
29
  TRTCVideoResolutionMode,
19
30
  TRTCVideoRotation,
20
31
  TUIVideoQuality,
21
32
  } from '@tencentcloud/tuiroom-engine-js';
33
+ import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
34
+ import { useRoomEngine } from '../../../hooks/useRoomEngine';
22
35
  import { useLiveState } from '../../../states/LiveState';
36
+ import { useVideoMixerState } from '../../../states/VideoMixerState';
23
37
  import { LiveStatus, LiveOrientation } from '../../../types';
38
+ import { debounce } from '../../../utils/utils';
24
39
  import MixerControl from './MixerControl.vue';
25
- import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
26
40
 
27
41
  const { t } = useUIKit();
28
42
 
29
43
  const { currentLive } = useLiveState();
30
44
 
45
+ const mixControlRef = ref<InstanceType<typeof MixerControl> | null>(null);
31
46
  const { publishVideoQuality, activeMediaSource, enableLocalVideoMixer, mediaSourceList } = useVideoMixerState();
32
47
  enableLocalVideoMixer();
33
48
 
34
-
35
49
  const currentLiveOrientation = computed(() => {
36
50
  if (currentLive.value
37
51
  && currentLive.value?.layoutTemplate >= 200 && currentLive.value?.layoutTemplate <= 599) {
@@ -47,7 +61,7 @@ const localMixerRef = ref();
47
61
 
48
62
  function getCanvasSize(
49
63
  videoResolution: TUIVideoQuality,
50
- resMode: TRTCVideoResolutionMode
64
+ resMode: TRTCVideoResolutionMode,
51
65
  ): { width: number; height: number } {
52
66
  const sizeMap = {
53
67
  [TUIVideoQuality.kVideoQuality_360p]: { width: 640, height: 360 },
@@ -62,28 +76,30 @@ function getCanvasSize(
62
76
  return { width, height };
63
77
  }
64
78
 
65
- const mixControlContainerStyle = ref({
66
- top: '0px',
67
- left: '0px',
68
- width: '0px',
69
- height: '0px',
79
+ const mixControlStyle: Ref<{
80
+ transform: string;
81
+ position: string;
82
+ }> = ref({
83
+ position: 'absolute',
84
+ transform: 'translate(0px, 0px)',
70
85
  });
71
86
 
72
- const mixControlStyle: Ref<{ top?: string; bottom?: string; transform: string }> = ref({
73
- top: '-6px',
74
- transform: 'translate(-50%, -100%)',
75
- });
87
+ let mixControlWidth: number;
88
+ let mixControlHeight: number;
89
+ // margin between control and media source
90
+ const CONTROL_MARGIN_WITH_MEDIA_SOURCE = 6;
76
91
 
77
92
  function getMixControlStyle() {
78
93
  if (!localMixerRef.value || !activeMediaSource.value) {
79
94
  return;
80
95
  }
96
+
81
97
  const { width: canvasWidth, height: canvasHeight } = getCanvasSize(
82
98
  publishVideoQuality.value,
83
- currentLiveOrientation.value === LiveOrientation.Landscape ? TRTCVideoResolutionMode.TRTCVideoResolutionModeLandscape : TRTCVideoResolutionMode.TRTCVideoResolutionModePortrait
99
+ currentLiveOrientation.value === LiveOrientation.Landscape ? TRTCVideoResolutionMode.TRTCVideoResolutionModeLandscape : TRTCVideoResolutionMode.TRTCVideoResolutionModePortrait,
84
100
  );
85
- const { width: realWidth, height: realHeight } = localMixerRef.value.getBoundingClientRect();
86
- const scale = Math.max(realWidth / canvasWidth, realHeight / canvasHeight);
101
+ const { width: viewportWidth, height: viewportHeight } = localMixerRef.value.getBoundingClientRect();
102
+ const scale = Math.max(viewportWidth / canvasWidth, viewportHeight / canvasHeight);
87
103
 
88
104
  const previewWidth = canvasWidth * scale;
89
105
  const previewHeight = canvasHeight * scale;
@@ -92,47 +108,105 @@ function getMixControlStyle() {
92
108
  const mediaSourceWidth = right - left;
93
109
  const mediaSourceHeight = bottom - top;
94
110
  const rotation = activeMediaSource.value.layout.rotation || TRTCVideoRotation.TRTCVideoRotation0;
111
+
112
+ const mediaSourceTop = top * scale - (previewHeight - viewportHeight) / 2;
113
+ const mediaSourceLeft = left * scale - (previewWidth - viewportWidth) / 2;
114
+ let mediaSourceDisplayWidth;
115
+ let mediaSourceDisplayHeight;
116
+
95
117
  if (rotation === TRTCVideoRotation.TRTCVideoRotation0 || rotation === TRTCVideoRotation.TRTCVideoRotation180) {
96
- mixControlContainerStyle.value = {
97
- top: `${top * scale - (previewHeight - realHeight) / 2}px`,
98
- left: `${left * scale - (previewWidth - realWidth) / 2}px`,
99
- width: `${mediaSourceWidth * scale}px`,
100
- height: `${mediaSourceHeight * scale}px`,
101
- };
118
+ mediaSourceDisplayWidth = mediaSourceWidth * scale;
119
+ mediaSourceDisplayHeight = mediaSourceHeight * scale;
102
120
  } else {
103
- mixControlContainerStyle.value = {
104
- top: `${top * scale - (previewHeight - realHeight) / 2}px`,
105
- left: `${left * scale - (previewWidth - realWidth) / 2}px`,
106
- width: `${mediaSourceHeight * scale}px`,
107
- height: `${mediaSourceWidth * scale}px`,
108
- };
121
+ mediaSourceDisplayWidth = mediaSourceHeight * scale;
122
+ mediaSourceDisplayHeight = mediaSourceWidth * scale;
123
+ }
124
+
125
+ const controlPosition = calculateOptimalControlPosition(
126
+ mediaSourceLeft,
127
+ mediaSourceTop,
128
+ mediaSourceDisplayWidth,
129
+ mediaSourceDisplayHeight,
130
+ viewportWidth,
131
+ viewportHeight,
132
+ );
133
+
134
+ mixControlStyle.value = {
135
+ ...controlPosition,
136
+ position: 'absolute',
137
+ };
138
+ }
139
+
140
+ function calculateOptimalControlPosition(
141
+ mediaSourceLeft: number,
142
+ mediaSourceTop: number,
143
+ mediaSourceWidth: number,
144
+ mediaSourceHeight: number,
145
+ viewportWidth: number,
146
+ viewportHeight: number,
147
+ ) {
148
+ // media source boundary
149
+ const mediaSourceBottom = mediaSourceTop + mediaSourceHeight;
150
+ const mediaSourceCenterX = mediaSourceLeft + mediaSourceWidth / 2;
151
+
152
+ // ideal position
153
+ let controlLeft = mediaSourceCenterX - mixControlWidth / 2;
154
+ let controlTop = mediaSourceTop - CONTROL_MARGIN_WITH_MEDIA_SOURCE - mixControlHeight;
155
+
156
+ // horizontal boundary detection and adjustment
157
+ if (controlLeft < 0) {
158
+ controlLeft = 0;
159
+ } else if (controlLeft + mixControlWidth > viewportWidth) {
160
+ controlLeft = viewportWidth - mixControlWidth;
109
161
  }
110
- if (top < 60) {
111
- mixControlStyle.value = {
112
- bottom: '-6px',
113
- transform: 'translate(-50%, 100%)',
114
- };
162
+
163
+ // vertical boundary detection and adjustment
164
+ // check if there is enough space to display the control above
165
+ const topSpaceAvailable = mediaSourceTop;
166
+ const bottomSpaceAvailable = viewportHeight - mediaSourceBottom;
167
+
168
+ if (controlTop >= 0 && topSpaceAvailable >= mixControlHeight + CONTROL_MARGIN_WITH_MEDIA_SOURCE) {
169
+ // top space is enough, keep it above
170
+ controlTop = Math.min(controlTop, viewportHeight - mixControlHeight);
171
+ } else if (bottomSpaceAvailable >= mixControlHeight + CONTROL_MARGIN_WITH_MEDIA_SOURCE) {
172
+ // top space is not enough, but bottom space is enough, move to bottom
173
+ controlTop = Math.max(0, mediaSourceBottom + CONTROL_MARGIN_WITH_MEDIA_SOURCE);
115
174
  } else {
116
- mixControlStyle.value = {
117
- top: '-6px',
118
- transform: 'translate(-50%, -100%)',
119
- };
175
+ // top space is not enough, but bottom space is not enough, move to top
176
+ controlTop = Math.max(0, mediaSourceTop - mixControlHeight - CONTROL_MARGIN_WITH_MEDIA_SOURCE);
120
177
  }
178
+
179
+ return {
180
+ transform: `translate(${controlLeft}px, ${controlTop}px)`,
181
+ };
121
182
  }
122
183
 
184
+ const debouncedGetMixControlStyle = debounce(getMixControlStyle, 16);
185
+
186
+ watch(() => activeMediaSource.value, async (newVal, oldVal) => {
187
+ if (!oldVal && newVal) {
188
+ await nextTick();
189
+ const mixControlElement = mixControlRef.value?.$el as HTMLElement;
190
+ const { width, height } = mixControlElement?.getBoundingClientRect() || { width: 0, height: 0 };
191
+ mixControlWidth = width;
192
+ mixControlHeight = height;
193
+ }
194
+ getMixControlStyle();
195
+ }, { immediate: true, deep: true });
196
+
123
197
  watch(
124
- () => [publishVideoQuality.value, currentLiveOrientation.value, activeMediaSource.value?.layout],
125
- ([newVideoQuality, newOrientation, newLayout]) => {
126
- if (!newVideoQuality || !newOrientation || !newLayout) {
198
+ () => [publishVideoQuality.value, currentLiveOrientation.value],
199
+ ([newVideoQuality, newOrientation]) => {
200
+ if (!newVideoQuality || !newOrientation) {
127
201
  return;
128
202
  }
129
203
  getMixControlStyle();
130
204
  },
131
- { immediate: true, deep: true }
205
+ { immediate: true, deep: true },
132
206
  );
133
207
 
134
208
  const re = new ResizeObserver(() => {
135
- getMixControlStyle();
209
+ debouncedGetMixControlStyle();
136
210
  });
137
211
 
138
212
  onMounted(() => {
@@ -143,7 +217,7 @@ onMounted(() => {
143
217
  getMixControlStyle();
144
218
  });
145
219
 
146
- watch(localLiveStatus, async newVal => {
220
+ watch(localLiveStatus, async (newVal) => {
147
221
  if (newVal === LiveStatus.Live) {
148
222
  const mediaSourceManager = roomEngine.instance?.getTRTCCloud().getMediaMixingManager();
149
223
  await mediaSourceManager?.startPublish();
@@ -169,14 +243,13 @@ onUnmounted(() => {
169
243
  width: 100%;
170
244
  height: 100%;
171
245
  }
172
- .mixer-control-container {
246
+ .mixer-control {
173
247
  position: absolute;
174
- pointer-events: none;
175
- .mixer-control {
176
- position: absolute;
177
- left: 50%;
178
- }
248
+ top: 0;
249
+ left: 0;
250
+ transition: transform 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
179
251
  }
252
+
180
253
  .local-mixer-placeholder {
181
254
  position: absolute;
182
255
  top: 0;
@@ -1,14 +1,14 @@
1
1
  <template>
2
- <live-stream-view :ignore-local-video="true">
2
+ <live-core-view :ignore-local-video="true">
3
3
  <template #localVideo="{ style }">
4
4
  <local-mixer :style="style" />
5
5
  </template>
6
- </live-stream-view>
6
+ </live-core-view>
7
7
  </template>
8
8
 
9
9
  <script setup lang="ts">
10
+ import { LiveCoreView } from '../LiveCoreView';
10
11
  import LocalMixer from './LocalMixer/index.vue';
11
- import { LiveStreamView } from '../LiveStreamView';
12
12
  </script>
13
13
 
14
14
  <style scoped lang="scss"></style>
@@ -1,5 +1,3 @@
1
- import { i18next } from '@tencentcloud/uikit-base-component-vue3';
2
-
3
1
  import enUS from './en-US';
4
2
  import zhCN from './zh-CN';
5
3
 
@@ -8,6 +6,4 @@ const resources = {
8
6
  'zh-CN': zhCN,
9
7
  };
10
8
 
11
- Object.entries(resources).forEach(([lng, resource]) => {
12
- i18next.addResourceBundle(lng, 'translation', { UserPicker: resource }, true, false);
13
- });
9
+ export { resources };
@@ -7,8 +7,11 @@ import type {
7
7
  IUserPickerDataSource,
8
8
  IUserPickerResult,
9
9
  } from './type';
10
+ import { addI18n } from '../../i18n';
11
+ import { resources } from './i18n';
10
12
 
11
- import './i18n';
13
+ addI18n('en-US', { translation: { UserPicker: resources['en-US'] } });
14
+ addI18n('zh-CN', { translation: { UserPicker: resources['zh-CN'] } });
12
15
 
13
16
  export type {
14
17
  IUserPickerProps,
@@ -19,5 +22,3 @@ export type {
19
22
  IUserPickerResult,
20
23
  };
21
24
  export { UserPicker };
22
-
23
- export default UserPicker;
@@ -1,25 +1,31 @@
1
1
  <template>
2
2
  <div class="video-preview-container">
3
- <div id="video-preview" class="video-preview"></div>
3
+ <div
4
+ id="video-preview"
5
+ class="video-preview"
6
+ />
4
7
  <div class="attention-info">
5
8
  <span
6
9
  v-if="!isCameraTesting && !isCameraTestLoading"
7
10
  class="off-camera-info"
8
- >{{ t('Off Camera') }}
11
+ >{{ t('Off Camera') }}
9
12
  </span>
10
- <IconLoading size="36" v-if="isCameraTestLoading" class="loading" />
13
+ <IconLoading
14
+ v-if="isCameraTestLoading"
15
+ size="36"
16
+ class="loading"
17
+ />
11
18
  </div>
12
19
  </div>
13
20
  </template>
14
21
 
15
22
  <script setup lang="ts">
16
23
  import { onMounted, onUnmounted } from 'vue';
17
- import { IconLoading } from '@tencentcloud/uikit-base-component-vue3';
18
- import { useI18n } from '../../locales';
19
24
  import TUIRoomEngine from '@tencentcloud/tuiroom-engine-js';
20
- import useDeviceState from '../../states/DeviceState';
25
+ import { IconLoading, useUIKit } from '@tencentcloud/uikit-base-component-vue3';
26
+ import { useDeviceState } from '../../states/DeviceState';
21
27
 
22
- const { t } = useI18n();
28
+ const { t } = useUIKit();
23
29
  const { isCameraTesting, isCameraTestLoading, startCameraDeviceTest, stopCameraDeviceTest } = useDeviceState();
24
30
 
25
31
  onMounted(async () => {
@@ -83,4 +89,3 @@ onUnmounted(async () => {
83
89
  }
84
90
  }
85
91
  </style>
86
- ../../states/DeviceState
@@ -16,13 +16,13 @@
16
16
  </template>
17
17
 
18
18
  <script setup lang="ts">
19
- import { watch, computed, ComputedRef } from 'vue';
20
- import { TUISelect, TUIOption } from '@tencentcloud/uikit-base-component-vue3';
21
- import { useI18n } from '../../locales';
19
+ import { watch, computed } from 'vue';
20
+ import type { ComputedRef } from 'vue';
22
21
  import { TUIVideoQuality } from '@tencentcloud/tuiroom-engine-js';
23
- import useDeviceState from '../../states/DeviceState';
22
+ import { TUISelect, TUIOption, useUIKit } from '@tencentcloud/uikit-base-component-vue3';
23
+ import { useDeviceState } from '../../states/DeviceState';
24
24
 
25
- const { t } = useI18n();
25
+ const { t } = useUIKit();
26
26
 
27
27
  const videoQualityList: ComputedRef<
28
28
  { label: string; value: TUIVideoQuality }[]
@@ -1,7 +1,12 @@
1
1
  export const resource = {
2
- Camera: 'Camera',
2
+ 'Camera': 'Camera',
3
3
  'Select device': 'Select device',
4
- Preview: 'Preview',
4
+ 'Preview': 'Preview',
5
5
  'Video profile': 'Video profile',
6
- Resolution: 'Resolution',
6
+ 'Resolution': 'Resolution',
7
+ 'Low Definition': 'Low Definition',
8
+ 'Standard Definition': 'Standard Definition',
9
+ 'High Definition': 'High Definition',
10
+ 'Super Definition': 'Super Definition',
11
+ 'Off Camera': 'Off Camera',
7
12
  };