tuikit-atomicx-vue3 3.4.2 → 4.3.1

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 (297) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/dist/baseComp/Modal/Modal.js +431 -23
  3. package/dist/chat/index.d.ts +18 -18
  4. package/dist/components/AudioSetting/AudioMediaControl.js +39 -41
  5. package/dist/components/AudioSetting/AudioSettingTab.js +10 -10
  6. package/dist/components/AudioSetting/MicrophoneSelect.js +8 -8
  7. package/dist/components/AudioSetting/SpeakerSelect.js +9 -9
  8. package/dist/components/AudioSettingPanel/i18n/en-US/index.d.ts +1 -0
  9. package/dist/components/AudioSettingPanel/i18n/en-US/index.js +2 -1
  10. package/dist/components/AudioSettingPanel/i18n/zh-CN/index.d.ts +1 -0
  11. package/dist/components/AudioSettingPanel/i18n/zh-CN/index.js +2 -1
  12. package/dist/components/AudioSettingPanel/index.js +81 -73
  13. package/dist/components/BarrageInput/BarrageInputH5.js +9 -9
  14. package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +3 -3
  15. package/dist/components/BarrageInput/MessageInputState.d.ts +28 -0
  16. package/dist/components/BarrageInput/MessageInputState.js +82 -0
  17. package/dist/components/BarrageInput/TextEditor/CharacterCountExtension.js +1 -1
  18. package/dist/components/BarrageInput/TextEditor/EditorCore.js +2 -2
  19. package/dist/components/BarrageInput/TextEditor/index.js +7 -7
  20. package/dist/components/BarrageInput/type.d.ts +17 -0
  21. package/dist/components/BarrageInput/type.js +4 -0
  22. package/dist/components/BarrageInput/utils.d.ts +30 -0
  23. package/dist/components/BarrageInput/utils.js +41 -0
  24. package/dist/components/BarrageList/BarrageList.js +80 -110
  25. package/dist/components/BarrageList/BarrageList.vue.d.ts +0 -29
  26. package/dist/components/BarrageList/BarrageListH5.js +95 -122
  27. package/dist/components/BarrageList/BarrageListH5.vue.d.ts +0 -29
  28. package/dist/components/BarrageList/BarrageListState.d.ts +58 -0
  29. package/dist/components/BarrageList/BarrageListState.js +106 -0
  30. package/dist/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.js +16 -24
  31. package/dist/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue.d.ts +5 -5
  32. package/dist/components/BarrageList/Message/MessageLayout/MessageLayout.js +48 -73
  33. package/dist/components/BarrageList/Message/MessageLayout/MessageLayout.vue.d.ts +5 -7
  34. package/dist/components/BarrageList/Message/TextMessage/TextMessage.js +70 -76
  35. package/dist/components/BarrageList/Message/TextMessage/TextMessage.vue.d.ts +6 -6
  36. package/dist/components/BarrageList/Message/TextMessage/emoji.d.ts +5 -0
  37. package/dist/components/BarrageList/Message/TextMessage/emoji.js +134 -0
  38. package/dist/components/BarrageList/index.d.ts +0 -36
  39. package/dist/components/CameraButton/index.js +18 -19
  40. package/dist/components/CoGuestPanel/CoGuestPanel.js +60 -60
  41. package/dist/components/CoHostPanel/BattlePanel.js +11 -11
  42. package/dist/components/CoHostPanel/CoHostPanel.js +10 -10
  43. package/dist/components/CoHostPanel/ConfigSettingPanel.js +49 -55
  44. package/dist/components/CoHostPanel/ConnectionPanel.js +132 -123
  45. package/dist/components/CoHostPanel/RecommendHostList.js +39 -36
  46. package/dist/components/CoHostPanel/constants.d.ts +3 -0
  47. package/dist/components/CoHostPanel/constants.js +6 -0
  48. package/dist/components/CoHostPanel/i18n/en-US/index.d.ts +1 -0
  49. package/dist/components/CoHostPanel/i18n/en-US/index.js +2 -1
  50. package/dist/components/CoHostPanel/i18n/zh-CN/index.d.ts +1 -0
  51. package/dist/components/CoHostPanel/i18n/zh-CN/index.js +3 -2
  52. package/dist/components/LiveAudienceList/LiveAudienceList.js +44 -45
  53. package/dist/components/LiveAudienceList/LiveAudienceListH5.js +7 -7
  54. package/dist/components/LiveAudienceList/UserActionMenu.js +57 -64
  55. package/dist/components/LiveList/LiveList.js +23 -23
  56. package/dist/components/LiveList/LiveListH5.js +38 -38
  57. package/dist/components/LiveScenePanel/CameraSettingDialog.js +10 -10
  58. package/dist/components/LiveScenePanel/MaterialItem.js +15 -15
  59. package/dist/components/LiveScenePanel/index.js +4 -4
  60. package/dist/components/LiveView/CoreViewDecorate/BattleDecorate.js +58 -58
  61. package/dist/components/LiveView/CoreViewDecorate/BattleUserDecorate.js +6 -6
  62. package/dist/components/LiveView/CoreViewDecorate/CoHostDecorate.js +5 -5
  63. package/dist/components/LiveView/DefaultStreamViewUI.js +44 -41
  64. package/dist/components/LiveView/PlayerControl/AudioControl.js +20 -20
  65. package/dist/components/LiveView/PlayerControl/MultiResolution.js +49 -48
  66. package/dist/components/LiveView/PlayerControl/MultiResolution.vue.d.ts +7 -1
  67. package/dist/components/LiveView/PlayerControl/PlayerControl.js +90 -86
  68. package/dist/components/LiveView/PlayerControl/PlayerControlState.js +127 -131
  69. package/dist/components/LiveView/PlayerControl/utils/domHelpers.d.ts +6 -0
  70. package/dist/components/LiveView/PlayerControl/utils/domHelpers.js +54 -22
  71. package/dist/components/LiveView/i18n/en-US/index.d.ts +2 -2
  72. package/dist/components/LiveView/i18n/en-US/index.js +2 -2
  73. package/dist/components/LiveView/i18n/zh-CN/index.d.ts +2 -2
  74. package/dist/components/LiveView/i18n/zh-CN/index.js +2 -2
  75. package/dist/components/LiveView/index.js +17 -17
  76. package/dist/components/MessageInput/TextEditor/EditorCore.js +2 -2
  77. package/dist/components/MessageList/MessageList.vue.d.ts +2 -2
  78. package/dist/components/MessageList/index.d.ts +18 -18
  79. package/dist/components/MicButton/index.js +11 -11
  80. package/dist/components/StreamMixer/LocalMixer/MixerControl.js +12 -12
  81. package/dist/components/StreamMixer/LocalMixer/index.js +66 -63
  82. package/dist/components/StreamView/Layout/CustomLayout.js +8 -8
  83. package/dist/components/StreamView/Layout/FloatLayout.js +124 -127
  84. package/dist/components/StreamView/Layout/GridLayout.js +5 -5
  85. package/dist/components/StreamView/index.js +25 -33
  86. package/dist/components/StreamView/manager/mediaManager.js +54 -60
  87. package/dist/components/VideoSetting/CameraSelect.js +8 -8
  88. package/dist/components/VideoSetting/VideoMediaControl.js +10 -10
  89. package/dist/components/VideoSetting/VideoPreview.js +9 -9
  90. package/dist/components/VideoSetting/VideoProfile.js +6 -6
  91. package/dist/components/VideoSetting/VideoSettingTab.js +40 -39
  92. package/dist/components/VideoSettingPanel/CameraSelect.js +8 -8
  93. package/dist/components/VideoSettingPanel/VideoPreview.js +1 -1
  94. package/dist/components/VideoSettingPanel/VideoProfile.js +18 -18
  95. package/dist/hooks/useRoomEngine.js +6 -6
  96. package/dist/{index-D2OVtqc8.js → index-BfIEeWMg.js} +191 -181
  97. package/dist/{index-Bm-QfV5o.js → index-DTi1fL-x.js} +460 -457
  98. package/dist/index.js +162 -144
  99. package/dist/report/MetricsKey.d.ts +16 -0
  100. package/dist/report/MetricsKey.js +4 -0
  101. package/dist/report/dataReport.d.ts +12 -0
  102. package/dist/report/dataReport.js +45 -0
  103. package/dist/report/index.d.ts +4 -0
  104. package/dist/report/index.js +6 -0
  105. package/dist/rtc/index.d.ts +5 -43
  106. package/dist/rtc/index.js +48 -48
  107. package/dist/states/BarrageState/BarrageState.d.ts +74 -0
  108. package/dist/states/BarrageState/BarrageState.js +80 -0
  109. package/dist/states/BarrageState/index.d.ts +1 -0
  110. package/dist/states/BarrageState/index.js +5 -0
  111. package/dist/states/{BattleState.d.ts → BattleState/BattleState.d.ts} +10 -11
  112. package/dist/states/BattleState/BattleState.js +203 -0
  113. package/dist/states/BattleState/index.d.ts +1 -0
  114. package/dist/states/BattleState/index.js +4 -0
  115. package/dist/states/CoGuestState.d.ts +24 -94
  116. package/dist/states/CoGuestState.js +297 -189
  117. package/dist/states/CoHostState/CoHostState.d.ts +2 -2
  118. package/dist/states/CoHostState/CoHostState.js +135 -131
  119. package/dist/states/{DeviceState.d.ts → DeviceState/DeviceState.d.ts} +25 -13
  120. package/dist/states/DeviceState/DeviceState.js +314 -0
  121. package/dist/states/DeviceState/index.d.ts +1 -0
  122. package/dist/states/DeviceState/index.js +4 -0
  123. package/dist/states/LiveAudienceState.d.ts +3 -1
  124. package/dist/states/LiveAudienceState.js +106 -63
  125. package/dist/states/{LiveState/index.d.ts → LiveListState/LiveListState.d.ts} +13 -8
  126. package/dist/states/LiveListState/LiveListState.js +285 -0
  127. package/dist/states/LiveListState/index.d.ts +1 -0
  128. package/dist/states/LiveListState/index.js +4 -0
  129. package/dist/states/LiveMonitorState/api/http.js +147 -129
  130. package/dist/states/LiveMonitorState/index.js +67 -62
  131. package/dist/states/LiveSeatState/index.d.ts +46 -11
  132. package/dist/states/LiveSeatState/index.js +34 -15
  133. package/dist/states/LiveSeatState/seatEventManager.d.ts +2 -0
  134. package/dist/states/LiveSeatState/seatEventManager.js +63 -42
  135. package/dist/states/LiveSeatState/seatManager.d.ts +34 -5
  136. package/dist/states/LiveSeatState/seatManager.js +131 -29
  137. package/dist/states/LiveSeatState/store.d.ts +5 -5
  138. package/dist/states/LiveSeatState/store.js +12 -10
  139. package/dist/states/LiveSeatState/usePlayStream/RTCStreamManager.js +1 -1
  140. package/dist/states/LiveSeatState/usePlayStream/RTCStreamPlayer.js +1 -1
  141. package/dist/states/LiveSeatState/usePlayStream/index.js +30 -28
  142. package/dist/states/LoginState.js +39 -34
  143. package/dist/states/SeatStore.js +82 -83
  144. package/dist/states/{VideoMixerState.d.ts → VideoMixerState/VideoMixerState.d.ts} +1 -1
  145. package/dist/states/VideoMixerState/VideoMixerState.js +269 -0
  146. package/dist/states/VideoMixerState/index.d.ts +1 -0
  147. package/dist/states/VideoMixerState/index.js +4 -0
  148. package/dist/styles/index.css +1 -1
  149. package/dist/types/audience.d.ts +21 -0
  150. package/dist/types/audience.js +4 -1
  151. package/dist/types/battle.d.ts +75 -3
  152. package/dist/types/battle.js +5 -1
  153. package/dist/types/coGuest.d.ts +72 -5
  154. package/dist/types/coGuest.js +4 -2
  155. package/dist/types/device.d.ts +38 -17
  156. package/dist/types/device.js +10 -8
  157. package/dist/types/index.d.ts +2 -2
  158. package/dist/types/index.js +96 -80
  159. package/dist/types/live.d.ts +36 -21
  160. package/dist/types/live.js +6 -4
  161. package/dist/types/seat.d.ts +23 -4
  162. package/dist/types/seat.js +7 -1
  163. package/dist/utils/eventCenter.d.ts +88 -0
  164. package/dist/utils/eventCenter.js +161 -0
  165. package/package.json +3 -3
  166. package/src/components/AudioSetting/AudioMediaControl.vue +1 -3
  167. package/src/components/AudioSetting/AudioSettingTab.vue +1 -2
  168. package/src/components/AudioSetting/MicrophoneSelect.vue +1 -2
  169. package/src/components/AudioSetting/SpeakerSelect.vue +1 -2
  170. package/src/components/AudioSettingPanel/i18n/en-US/index.ts +1 -0
  171. package/src/components/AudioSettingPanel/i18n/zh-CN/index.ts +1 -0
  172. package/src/components/AudioSettingPanel/index.vue +4 -2
  173. package/src/components/BarrageInput/BarrageInputH5.vue +1 -1
  174. package/src/components/BarrageInput/EmojiPicker/EmojiPicker.vue +1 -1
  175. package/src/components/BarrageInput/MessageInputState.ts +160 -0
  176. package/src/components/BarrageInput/TextEditor/TextEditor.vue +1 -1
  177. package/src/components/BarrageInput/type.ts +26 -0
  178. package/src/components/BarrageInput/utils.ts +45 -0
  179. package/src/components/BarrageList/BarrageList.vue +61 -117
  180. package/src/components/BarrageList/BarrageListH5.vue +75 -159
  181. package/src/components/BarrageList/BarrageListState.ts +223 -0
  182. package/src/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue +8 -55
  183. package/src/components/BarrageList/Message/MessageLayout/MessageLayout.vue +19 -44
  184. package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +69 -96
  185. package/src/components/BarrageList/Message/TextMessage/emoji.ts +132 -0
  186. package/src/components/CameraButton/index.vue +0 -1
  187. package/src/components/CoGuestPanel/CoGuestPanel.vue +16 -91
  188. package/src/components/CoHostPanel/BattlePanel.vue +1 -4
  189. package/src/components/CoHostPanel/ConfigSettingPanel.vue +2 -8
  190. package/src/components/CoHostPanel/ConnectionPanel.vue +37 -33
  191. package/src/components/CoHostPanel/RecommendHostList.vue +12 -13
  192. package/src/components/CoHostPanel/constants.ts +3 -0
  193. package/src/components/CoHostPanel/i18n/en-US/index.ts +1 -0
  194. package/src/components/CoHostPanel/i18n/zh-CN/index.ts +2 -1
  195. package/src/components/LiveAudienceList/LiveAudienceList.vue +4 -5
  196. package/src/components/LiveAudienceList/LiveAudienceListH5.vue +2 -2
  197. package/src/components/LiveAudienceList/UserActionMenu.vue +7 -48
  198. package/src/components/LiveList/LiveList.vue +5 -5
  199. package/src/components/LiveList/LiveListH5.vue +6 -6
  200. package/src/components/LiveScenePanel/index.vue +2 -2
  201. package/src/components/LiveView/CoreViewDecorate/BattleDecorate.vue +10 -15
  202. package/src/components/LiveView/CoreViewDecorate/BattleUserDecorate.vue +2 -2
  203. package/src/components/LiveView/DefaultStreamViewUI.vue +5 -3
  204. package/src/components/LiveView/PlayerControl/AudioControl.vue +1 -1
  205. package/src/components/LiveView/PlayerControl/MultiResolution.vue +9 -3
  206. package/src/components/LiveView/PlayerControl/PlayerControl.vue +10 -2
  207. package/src/components/LiveView/PlayerControl/PlayerControlState.ts +233 -259
  208. package/src/components/LiveView/PlayerControl/utils/domHelpers.ts +64 -0
  209. package/src/components/LiveView/i18n/en-US/index.ts +2 -2
  210. package/src/components/LiveView/i18n/zh-CN/index.ts +2 -2
  211. package/src/components/LiveView/index.vue +2 -2
  212. package/src/components/MicButton/index.vue +3 -3
  213. package/src/components/StreamMixer/LocalMixer/index.vue +6 -8
  214. package/src/components/StreamView/Layout/CustomLayout.vue +2 -2
  215. package/src/components/StreamView/Layout/FloatLayout.vue +88 -83
  216. package/src/components/StreamView/index.vue +28 -14
  217. package/src/components/StreamView/manager/mediaManager.ts +38 -42
  218. package/src/components/VideoSetting/CameraSelect.vue +1 -2
  219. package/src/components/VideoSetting/VideoMediaControl.vue +1 -1
  220. package/src/components/VideoSetting/VideoPreview.vue +1 -2
  221. package/src/components/VideoSetting/VideoProfile.vue +1 -1
  222. package/src/components/VideoSetting/VideoSettingTab.vue +9 -5
  223. package/src/components/VideoSettingPanel/CameraSelect.vue +1 -2
  224. package/src/components/VideoSettingPanel/VideoProfile.vue +7 -7
  225. package/src/hooks/useRoomEngine.ts +1 -1
  226. package/src/report/MetricsKey.ts +16 -0
  227. package/src/report/dataReport.ts +55 -0
  228. package/src/report/index.ts +7 -0
  229. package/src/rtc/index.ts +7 -9
  230. package/src/types/audience.ts +27 -1
  231. package/src/types/battle.ts +87 -4
  232. package/src/types/coGuest.ts +87 -5
  233. package/src/types/device.ts +41 -16
  234. package/src/types/index.ts +2 -2
  235. package/src/types/live.ts +41 -22
  236. package/src/types/seat.ts +28 -4
  237. package/src/utils/eventCenter.ts +249 -0
  238. package/dist/DialogPortal-CvJcEAsn.js +0 -417
  239. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.js +0 -23
  240. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.vue.d.ts +0 -30
  241. package/dist/components/BarrageList/Message/FaceMessage/index.d.ts +0 -3
  242. package/dist/components/BarrageList/Message/FaceMessage/index.js +0 -4
  243. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.js +0 -4
  244. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue.d.ts +0 -16
  245. package/dist/components/BarrageList/Message/GroupTipMessage/index.d.ts +0 -3
  246. package/dist/components/BarrageList/Message/GroupTipMessage/index.js +0 -25
  247. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.js +0 -71
  248. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.vue.d.ts +0 -34
  249. package/dist/components/BarrageList/Message/ImageMessage/index.d.ts +0 -3
  250. package/dist/components/BarrageList/Message/ImageMessage/index.js +0 -4
  251. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.js +0 -9
  252. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.vue.d.ts +0 -2
  253. package/dist/components/BarrageList/Message/MergerMessage/index.d.ts +0 -3
  254. package/dist/components/BarrageList/Message/MergerMessage/index.js +0 -4
  255. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.js +0 -40
  256. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue.d.ts +0 -54
  257. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.js +0 -26
  258. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue.d.ts +0 -15
  259. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.d.ts +0 -3
  260. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.js +0 -4
  261. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.js +0 -41
  262. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue.d.ts +0 -35
  263. package/dist/components/BarrageList/Message/RecalledMessage/index.d.ts +0 -3
  264. package/dist/components/BarrageList/Message/RecalledMessage/index.js +0 -4
  265. package/dist/components/BarrageList/MessageForward/ForwardListItem.js +0 -45
  266. package/dist/components/BarrageList/MessageForward/ForwardListItem.vue.d.ts +0 -17
  267. package/dist/components/BarrageList/MessageForward/MessageForward.js +0 -203
  268. package/dist/components/BarrageList/MessageForward/MessageForward.vue.d.ts +0 -2
  269. package/dist/components/BarrageList/MessageForward/index.d.ts +0 -3
  270. package/dist/components/BarrageList/MessageForward/index.js +0 -4
  271. package/dist/components/StreamView/Layout/MixLayout.js +0 -89
  272. package/dist/components/StreamView/Layout/MixLayout.vue.d.ts +0 -31
  273. package/dist/states/BarrageListState/BarrageListState.d.ts +0 -26
  274. package/dist/states/BarrageListState/BarrageListState.js +0 -122
  275. package/dist/states/BarrageListState/index.d.ts +0 -1
  276. package/dist/states/BarrageListState/index.js +0 -4
  277. package/dist/states/BattleState.js +0 -117
  278. package/dist/states/DeviceState.js +0 -296
  279. package/dist/states/LiveState/index.js +0 -254
  280. package/dist/states/VideoMixerState.js +0 -260
  281. package/src/components/BarrageList/Message/FaceMessage/FaceMessage.vue +0 -43
  282. package/src/components/BarrageList/Message/FaceMessage/index.ts +0 -3
  283. package/src/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue +0 -55
  284. package/src/components/BarrageList/Message/GroupTipMessage/index.ts +0 -3
  285. package/src/components/BarrageList/Message/ImageMessage/ImageMessage.vue +0 -181
  286. package/src/components/BarrageList/Message/ImageMessage/index.ts +0 -3
  287. package/src/components/BarrageList/Message/MergerMessage/MergerMessage.vue +0 -6
  288. package/src/components/BarrageList/Message/MergerMessage/index.ts +0 -3
  289. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +0 -70
  290. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue +0 -40
  291. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/index.ts +0 -3
  292. package/src/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue +0 -82
  293. package/src/components/BarrageList/Message/RecalledMessage/index.ts +0 -3
  294. package/src/components/BarrageList/MessageForward/ForwardListItem.vue +0 -67
  295. package/src/components/BarrageList/MessageForward/MessageForward.vue +0 -388
  296. package/src/components/BarrageList/MessageForward/index.ts +0 -3
  297. package/src/components/StreamView/Layout/MixLayout.vue +0 -144
@@ -0,0 +1,45 @@
1
+ import { MessageContentType } from './type';
2
+ import type { InputContent } from './type';
3
+
4
+ function convertInputContentToEditorNode(item: InputContent) {
5
+ switch (item.type) {
6
+ case MessageContentType.TEXT:
7
+ return {
8
+ type: 'text',
9
+ text: item.content,
10
+ };
11
+ case MessageContentType.IMAGE: {
12
+ const imageFile = item.content as File;
13
+ const imageUrl = URL.createObjectURL(imageFile);
14
+ return {
15
+ type: MessageContentType.IMAGE,
16
+ attrs: {
17
+ src: imageUrl,
18
+ alt: imageFile?.name,
19
+ fileData: imageFile,
20
+ title: imageFile?.name,
21
+ },
22
+ };
23
+ }
24
+ case MessageContentType.EMOJI: {
25
+ const emoticonContent = item.content as { url: string; key: string; text: string };
26
+ return {
27
+ type: MessageContentType.EMOJI,
28
+ attrs: {
29
+ src: emoticonContent.url,
30
+ alt: emoticonContent.key,
31
+ title: emoticonContent.text,
32
+ },
33
+ };
34
+ }
35
+ default:
36
+ return {
37
+ type: 'text',
38
+ text: String(item.content),
39
+ };
40
+ }
41
+ }
42
+
43
+ export {
44
+ convertInputContentToEditorNode,
45
+ };
@@ -2,34 +2,21 @@
2
2
  <script lang="ts" setup>
3
3
  import { ref, onMounted, onUnmounted, nextTick, watch, provide, useSlots, withDefaults, defineProps } from 'vue';
4
4
  import type { Component, CSSProperties } from 'vue';
5
- import { ObserverView } from '../../baseComp/ObserverView';
6
- import { throttle } from '../../utils/lodash';
5
+ import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
7
6
  import { useScroll } from '../../hooks/useScroll';
8
- import { useBarrageListState } from '../../states/BarrageListState';
7
+ import { useLiveListState } from '../../states/LiveListState';
8
+ import { useLoginState } from '../../states/LoginState';
9
+ import { throttle } from '../../utils/lodash';
10
+ import { useBarrageListState } from './BarrageListState';
11
+ import UserActionMenu from './ClickAction/UserActionMenu.vue';
9
12
  import { Message as DefaultMessage } from './Message';
10
- import { MessageForward } from './MessageForward';
11
13
  import { MessageListContextSymbol } from './MessageListContext';
12
- import type { IMessageModel } from '@tencentcloud/chat-uikit-engine';
13
- import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
14
- import UserActionMenu from './ClickAction/UserActionMenu.vue';
15
- import { useLoginState } from '../../states/LoginState';
16
- import { useLiveState } from '../../states/LiveState';
14
+ import type { Barrage } from '../../states/BarrageState';
17
15
 
18
16
  const { t } = useUIKit();
19
17
 
20
18
  interface IMessageListProps {
21
- /** message actions e.g. recall, delete, etc. */
22
- // messageActionList?: IMessageAction[] | undefined;
23
- /** max time between message group */
24
- messageAggregationTime?: number | undefined;
25
- /** custom filter function */
26
- filter?: ((message: IMessageModel) => boolean) | undefined;
27
- /** custom message component */
28
19
  Message?: Component | undefined;
29
- /** custom message timeline component */
30
- MessageTimeDivider?: Component | undefined;
31
- /** custom local notification message component */
32
- LocalNoticeMessage?: Component | undefined;
33
20
  containerStyle?: CSSProperties | undefined;
34
21
  itemStyle?: CSSProperties | undefined;
35
22
  height?: string;
@@ -37,25 +24,27 @@ interface IMessageListProps {
37
24
  }
38
25
 
39
26
  const props = withDefaults(defineProps<IMessageListProps>(), {
40
- /** props */
41
- filter: undefined,
42
- enableReadReceipt: false,
43
- messageAggregationTime: 5 * 60,
44
- /** custom components */
45
27
  Message: undefined,
46
- MessageTimeDivider: undefined,
47
- LocalNoticeMessage: undefined,
48
28
  });
49
-
29
+ const scrollContainer = ref<HTMLElement | null>(null);
50
30
  const slots = useSlots();
51
31
  const { loginUserInfo } = useLoginState();
52
- const { currentLive } = useLiveState();
53
- const currentMessage = ref<IMessageModel>({} as IMessageModel);
32
+ const { currentLive } = useLiveListState();
33
+ const currentMessage = ref<Barrage>();
54
34
  const showActionMenu = ref<boolean>(false);
55
35
  const actionMenuStyle = ref<CSSProperties>({});
56
36
 
57
37
  const nickClickTarget = ref<HTMLElement | null>(null);
58
38
 
39
+ const autoScrollThreshold = 150;
40
+ const isFinishFirstRender = ref<boolean>(false);
41
+ const isDisableAutoScroll = ref<boolean>(false);
42
+ const distanceToBottom = ref<number>(0);
43
+
44
+ const { messageList, messageGroupTip } = useBarrageListState();
45
+
46
+ const { scrollToBottom } = useScroll();
47
+
59
48
  // Calculate action menu position to prevent overflow beyond scrollContainer boundaries
60
49
  const calculateActionMenuPosition = (targetRect: DOMRect) => {
61
50
  if (!scrollContainer.value) {
@@ -96,10 +85,10 @@ const calculateActionMenuPosition = (targetRect: DOMRect) => {
96
85
 
97
86
  provide(MessageListContextSymbol, {
98
87
  slots,
99
- nickClick: (payload: { message: IMessageModel; event: MouseEvent }) => {
100
- const { message, event } = payload;
88
+ nickClick: (data: { message: Barrage; event: MouseEvent }) => {
89
+ const { message, event } = data;
101
90
  const isOwner = loginUserInfo.value?.userId === currentLive.value?.liveOwner.userId;
102
- const isMe = loginUserInfo.value?.userId === message.from;
91
+ const isMe = loginUserInfo.value?.userId === message.sender.userId;
103
92
  if (!isOwner || isMe) {
104
93
  return;
105
94
  }
@@ -111,25 +100,14 @@ provide(MessageListContextSymbol, {
111
100
  },
112
101
  });
113
102
 
114
- const autoScrollThreshold = 150;
115
- const isFinishFirstRender = ref<boolean>(false);
116
- const isDisableAutoScroll = ref<boolean>(false);
117
- const distanceToBottom = ref<number>(0);
118
- const isLoadingHistory = ref<boolean>(false);
119
- const scrollContainer = ref<HTMLElement | null>(null);
120
-
121
- const { messageGroupTip, messageList, loadMoreMessage, currentConversationID } = useBarrageListState();
122
-
123
- const { scrollToBottom } = useScroll();
124
-
125
103
  // Monitor scroll events
126
104
  const handleScroll = throttle(() => {
127
105
  if (!scrollContainer.value) {
128
106
  return;
129
107
  }
130
108
 
131
- distanceToBottom.value =
132
- scrollContainer.value.scrollHeight - scrollContainer.value.scrollTop - scrollContainer.value.clientHeight;
109
+ distanceToBottom.value
110
+ = scrollContainer.value.scrollHeight - scrollContainer.value.scrollTop - scrollContainer.value.clientHeight;
133
111
 
134
112
  if (distanceToBottom.value > autoScrollThreshold) {
135
113
  isDisableAutoScroll.value = true;
@@ -147,52 +125,15 @@ const initializeMessageList = async () => {
147
125
  isDisableAutoScroll.value = false;
148
126
  };
149
127
 
150
- // Load more history messages
151
- const loadMoreHistory = async () => {
152
- // Skip if initial loading or already loading
153
- if (!isFinishFirstRender.value || isLoadingHistory.value || !messageList.value?.length) {
154
- return;
155
- }
156
-
157
- isLoadingHistory.value = true;
158
-
159
- // Record current distance from bottom
160
- if (!scrollContainer.value) {
161
- isLoadingHistory.value = false;
162
- return;
163
- }
164
-
165
- // Calculate distance from bottom before loading
166
- const distanceFromBottom =
167
- scrollContainer.value.scrollHeight - scrollContainer.value.scrollTop - scrollContainer.value.clientHeight;
168
-
169
- // Load more messages
170
- await loadMoreMessage();
171
-
172
- // Wait for DOM update
173
- await nextTick();
174
-
175
- // Restore scroll position to maintain the same distance from bottom
176
- if (scrollContainer.value) {
177
- const newScrollTop = scrollContainer.value.scrollHeight - scrollContainer.value.clientHeight - distanceFromBottom;
178
-
179
- // Ensure scroll position is within valid range
180
- scrollContainer.value.scrollTop = Math.max(
181
- 0,
182
- Math.min(scrollContainer.value.scrollHeight - scrollContainer.value.clientHeight, newScrollTop)
183
- );
184
- }
185
-
186
- isLoadingHistory.value = false;
187
- };
188
-
189
- watch(currentConversationID, () => {
128
+ watch(() => currentLive.value?.liveId, () => {
190
129
  initializeMessageList();
191
130
  });
192
131
 
193
- // Monitor message list changes
194
- watch(messageList, (newMessages, oldMessages) => {
195
- if (oldMessages === undefined && newMessages && !isFinishFirstRender.value) {
132
+ watch(() => messageList.value?.length, (length) => {
133
+ const newMessage = messageList.value[length - 1];
134
+ const oldMessage = messageList.value[length - 2];
135
+
136
+ if (oldMessage === undefined && newMessage && !isFinishFirstRender.value) {
196
137
  // Switch to a new conversation
197
138
  nextTick(() => {
198
139
  scrollToBottom({ behavior: 'instant' });
@@ -200,15 +141,13 @@ watch(messageList, (newMessages, oldMessages) => {
200
141
  });
201
142
  }
202
143
 
203
- if (!oldMessages || !newMessages || !newMessages.length) {
144
+ if (!oldMessage || !newMessage || !length) {
204
145
  return;
205
146
  }
206
147
 
207
- const newLastMessage = newMessages[newMessages.length - 1];
208
- const oldLastMessage = oldMessages[oldMessages.length - 1];
209
- if (newLastMessage?.ID !== oldLastMessage?.ID) {
210
- const shouldAutoScroll =
211
- newLastMessage.flow === 'out' || (!isDisableAutoScroll.value && distanceToBottom.value < autoScrollThreshold);
148
+ if (newMessage?.sequence !== oldMessage?.sequence) {
149
+ const shouldAutoScroll
150
+ = newMessage.sender.userId === loginUserInfo.value?.userId || (!isDisableAutoScroll.value && distanceToBottom.value < autoScrollThreshold);
212
151
  if (shouldAutoScroll) {
213
152
  scrollToBottom({ behavior: 'smooth' });
214
153
  } else {
@@ -233,41 +172,40 @@ onUnmounted(() => {
233
172
 
234
173
  <template>
235
174
  <div class="message-list" :style="{ height: props.height, ...props.style }">
236
- <div id="messageScrollList" ref="scrollContainer" class="message-list-container" :style="props.containerStyle">
237
- <ObserverView
238
- root="#messageScrollList"
239
- :rootMargin="'50px 0px 0px 0px'"
240
- :threshold="0.1"
241
- @on-show="loadMoreHistory"
242
- >
243
- <div id="loadMore"></div>
244
- </ObserverView>
245
-
175
+ <div
176
+ id="messageScrollList"
177
+ ref="scrollContainer"
178
+ class="message-list-container"
179
+ :style="props.containerStyle"
180
+ >
246
181
  <div class="message-chunk">
247
- <template v-for="message in messageList" :key="message.ID + message.isRevoked + message.status">
182
+ <template v-for="message in messageList" :key="message.sequence + message.timestampInSecond">
248
183
  <component
249
- :style="props.itemStyle"
250
184
  :is="props.Message || DefaultMessage"
185
+ :style="props.itemStyle"
251
186
  :message="message"
252
187
  :is-last-in-chunk="true"
253
188
  />
254
189
  </template>
255
190
  </div>
256
- <div class="empty-message" v-if="!messageList?.length">{{ t('No message yet') }}</div>
191
+ <div v-if="!messageList?.length" class="empty-message">
192
+ {{ t('No message yet') }}
193
+ </div>
257
194
  </div>
258
- <div class="message-group-tip" v-if="messageGroupTip">
259
- <div class="message-group-tip-name">{{ messageGroupTip?.nameCard || messageGroupTip?.userName || messageGroupTip?.userId }}</div>
195
+ <div v-if="messageGroupTip" class="message-group-tip">
196
+ <div class="message-group-tip-name">
197
+ {{ messageGroupTip?.nameCard || messageGroupTip?.userName || messageGroupTip?.userId }}
198
+ </div>
260
199
  <div class="message-group-tip-action">
261
200
  {{ messageGroupTip?.displayAction === 'enter' ? t('Come in') : t('Leave') }}
262
201
  </div>
263
202
  </div>
264
203
  </div>
265
- <MessageForward />
266
204
  <UserActionMenu
267
- v-if="showActionMenu"
268
- :user-id="currentMessage.from"
269
- :user-name="currentMessage.nameCard || currentMessage.nick || currentMessage.from"
270
- :avatar-url="currentMessage.avatar"
205
+ v-if="showActionMenu && currentMessage"
206
+ :user-id="currentMessage?.sender.userId"
207
+ :user-name="currentMessage?.sender.nameCard || currentMessage?.sender.userName || currentMessage?.sender.userId"
208
+ :avatar-url="currentMessage?.sender.avatarUrl"
271
209
  :style="actionMenuStyle"
272
210
  :click-target="nickClickTarget"
273
211
  @close="showActionMenu = false"
@@ -286,21 +224,25 @@ onUnmounted(() => {
286
224
  overflow: hidden;
287
225
  background-color: var(--bg-color-operate);
288
226
  }
227
+
289
228
  .message-list-container {
290
229
  flex: 1;
291
230
  height: 100%;
292
231
  padding: 10px;
293
232
  @include scrollbar.scrollbar-thin();
294
233
  }
234
+
295
235
  .message-chunk--container {
296
236
  margin-top: 10px;
297
237
  }
238
+
298
239
  .message-chunk {
299
240
  display: flex;
300
241
  flex-direction: column;
301
242
  gap: 8px;
302
243
  height: 0;
303
244
  }
245
+
304
246
  .empty-message {
305
247
  text-align: center;
306
248
  color: var(--text-color-secondary);
@@ -310,12 +252,14 @@ onUnmounted(() => {
310
252
  align-items: center;
311
253
  height: 100%;
312
254
  }
255
+
313
256
  .message-action-mask {
314
257
  position: absolute;
315
258
  width: 100%;
316
259
  height: 100%;
317
260
  background: transparent;
318
261
  }
262
+
319
263
  .message-action-container {
320
264
  position: absolute;
321
265
  }
@@ -367,7 +311,7 @@ onUnmounted(() => {
367
311
  .message-group-tip-name {
368
312
  color: var(--uikit-color-theme-8);
369
313
  }
370
- .message-group-tip-action {
371
- }
314
+
315
+ .message-group-tip-action {}
372
316
  }
373
317
  </style>