tuikit-atomicx-vue3 3.4.1 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) 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 +25 -25
  42. package/dist/components/CoHostPanel/CoHostPanel.js +60 -55
  43. package/dist/components/CoHostPanel/ConfigSettingPanel.js +49 -55
  44. package/dist/components/CoHostPanel/ConnectionPanel.js +129 -120
  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/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.js +58 -58
  61. package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.js +56 -49
  62. package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.js +6 -6
  63. package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.js +1 -1
  64. package/dist/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.js +46 -43
  65. package/dist/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.js +23 -23
  66. package/dist/components/LiveView/PlayerControl/MultiResolution.js +79 -0
  67. package/dist/components/LiveView/PlayerControl/MultiResolution.vue.d.ts +8 -0
  68. package/dist/components/LiveView/PlayerControl/PlayerControl.js +172 -0
  69. package/dist/components/LiveView/PlayerControl/PlayerControlState.js +263 -0
  70. package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/domHelpers.d.ts +6 -0
  71. package/dist/components/LiveView/PlayerControl/utils/domHelpers.js +131 -0
  72. package/dist/components/{LiveCoreView/i18n/zh-CN → LiveView/i18n/en-US}/index.d.ts +3 -2
  73. package/dist/components/{LiveCoreView → LiveView}/i18n/en-US/index.js +4 -3
  74. package/dist/components/{LiveCoreView/i18n/en-US → LiveView/i18n/zh-CN}/index.d.ts +3 -2
  75. package/dist/components/{LiveCoreView → LiveView}/i18n/zh-CN/index.js +4 -3
  76. package/dist/components/LiveView/index.d.ts +79 -0
  77. package/dist/components/{LiveCoreView → LiveView}/index.js +44 -42
  78. package/dist/components/MessageInput/TextEditor/EditorCore.js +2 -2
  79. package/dist/components/MessageList/MessageList.vue.d.ts +2 -2
  80. package/dist/components/MessageList/index.d.ts +18 -18
  81. package/dist/components/MicButton/index.js +11 -11
  82. package/dist/components/StreamMixer/LocalMixer/MixerControl.js +12 -12
  83. package/dist/components/StreamMixer/LocalMixer/index.js +66 -63
  84. package/dist/components/StreamMixer/index.js +6 -6
  85. package/dist/components/StreamView/Layout/CustomLayout.js +8 -8
  86. package/dist/components/StreamView/Layout/FloatLayout.js +124 -127
  87. package/dist/components/StreamView/Layout/GridLayout.js +5 -5
  88. package/dist/components/StreamView/index.js +25 -33
  89. package/dist/components/StreamView/manager/mediaManager.js +54 -60
  90. package/dist/components/VideoSetting/CameraSelect.js +8 -8
  91. package/dist/components/VideoSetting/VideoMediaControl.js +10 -10
  92. package/dist/components/VideoSetting/VideoPreview.js +9 -9
  93. package/dist/components/VideoSetting/VideoProfile.js +6 -6
  94. package/dist/components/VideoSetting/VideoSettingTab.js +40 -39
  95. package/dist/components/VideoSettingPanel/CameraSelect.js +8 -8
  96. package/dist/components/VideoSettingPanel/VideoPreview.js +1 -1
  97. package/dist/components/VideoSettingPanel/VideoProfile.js +18 -18
  98. package/dist/hooks/useRoomEngine.js +6 -6
  99. package/dist/{index-D88ja_7_.js → index-BfIEeWMg.js} +1767 -1757
  100. package/dist/{index-D-KJvDvy.js → index-DTi1fL-x.js} +460 -457
  101. package/dist/index.js +177 -157
  102. package/dist/report/MetricsKey.d.ts +16 -0
  103. package/dist/report/MetricsKey.js +4 -0
  104. package/dist/report/dataReport.d.ts +12 -0
  105. package/dist/report/dataReport.js +45 -0
  106. package/dist/report/index.d.ts +4 -0
  107. package/dist/report/index.js +6 -0
  108. package/dist/rtc/index.d.ts +6 -81
  109. package/dist/rtc/index.js +53 -52
  110. package/dist/states/BarrageState/BarrageState.d.ts +74 -0
  111. package/dist/states/BarrageState/BarrageState.js +80 -0
  112. package/dist/states/BarrageState/index.d.ts +1 -0
  113. package/dist/states/BarrageState/index.js +5 -0
  114. package/dist/states/{BattleState.d.ts → BattleState/BattleState.d.ts} +10 -11
  115. package/dist/states/BattleState/BattleState.js +203 -0
  116. package/dist/states/BattleState/index.d.ts +1 -0
  117. package/dist/states/BattleState/index.js +4 -0
  118. package/dist/states/CoGuestState.d.ts +24 -94
  119. package/dist/states/CoGuestState.js +297 -189
  120. package/dist/states/CoHostState/CoHostState.d.ts +2 -2
  121. package/dist/states/CoHostState/CoHostState.js +135 -131
  122. package/dist/states/{DeviceState.d.ts → DeviceState/DeviceState.d.ts} +25 -13
  123. package/dist/states/DeviceState/DeviceState.js +314 -0
  124. package/dist/states/DeviceState/index.d.ts +1 -0
  125. package/dist/states/DeviceState/index.js +4 -0
  126. package/dist/states/LiveAudienceState.d.ts +3 -1
  127. package/dist/states/LiveAudienceState.js +106 -63
  128. package/dist/states/{LiveState/index.d.ts → LiveListState/LiveListState.d.ts} +13 -8
  129. package/dist/states/LiveListState/LiveListState.js +285 -0
  130. package/dist/states/LiveListState/index.d.ts +1 -0
  131. package/dist/states/LiveListState/index.js +4 -0
  132. package/dist/states/LiveMonitorState/api/http.js +147 -129
  133. package/dist/states/LiveMonitorState/index.js +67 -62
  134. package/dist/states/LiveSeatState/index.d.ts +46 -11
  135. package/dist/states/LiveSeatState/index.js +34 -15
  136. package/dist/states/LiveSeatState/seatEventManager.d.ts +2 -0
  137. package/dist/states/LiveSeatState/seatEventManager.js +63 -42
  138. package/dist/states/LiveSeatState/seatManager.d.ts +34 -5
  139. package/dist/states/LiveSeatState/seatManager.js +131 -29
  140. package/dist/states/LiveSeatState/store.d.ts +5 -5
  141. package/dist/states/LiveSeatState/store.js +12 -10
  142. package/dist/states/LiveSeatState/usePlayStream/RTCStreamManager.js +1 -1
  143. package/dist/states/LiveSeatState/usePlayStream/RTCStreamPlayer.js +1 -1
  144. package/dist/states/LiveSeatState/usePlayStream/index.js +30 -28
  145. package/dist/states/LoginState.js +39 -34
  146. package/dist/states/SeatStore.js +82 -83
  147. package/dist/states/{VideoMixerState.d.ts → VideoMixerState/VideoMixerState.d.ts} +1 -1
  148. package/dist/states/VideoMixerState/VideoMixerState.js +269 -0
  149. package/dist/states/VideoMixerState/index.d.ts +1 -0
  150. package/dist/states/VideoMixerState/index.js +4 -0
  151. package/dist/styles/index.css +1 -1
  152. package/dist/types/audience.d.ts +21 -0
  153. package/dist/types/audience.js +4 -1
  154. package/dist/types/battle.d.ts +75 -3
  155. package/dist/types/battle.js +5 -1
  156. package/dist/types/coGuest.d.ts +72 -5
  157. package/dist/types/coGuest.js +4 -2
  158. package/dist/types/device.d.ts +38 -17
  159. package/dist/types/device.js +10 -8
  160. package/dist/types/index.d.ts +2 -2
  161. package/dist/types/index.js +96 -80
  162. package/dist/types/live.d.ts +36 -21
  163. package/dist/types/live.js +6 -4
  164. package/dist/types/seat.d.ts +23 -4
  165. package/dist/types/seat.js +7 -1
  166. package/dist/utils/eventCenter.d.ts +88 -0
  167. package/dist/utils/eventCenter.js +161 -0
  168. package/package.json +2 -2
  169. package/src/components/AudioSetting/AudioMediaControl.vue +1 -3
  170. package/src/components/AudioSetting/AudioSettingTab.vue +1 -2
  171. package/src/components/AudioSetting/MicrophoneSelect.vue +1 -2
  172. package/src/components/AudioSetting/SpeakerSelect.vue +1 -2
  173. package/src/components/AudioSettingPanel/i18n/en-US/index.ts +1 -0
  174. package/src/components/AudioSettingPanel/i18n/zh-CN/index.ts +1 -0
  175. package/src/components/AudioSettingPanel/index.vue +4 -2
  176. package/src/components/BarrageInput/BarrageInputH5.vue +1 -1
  177. package/src/components/BarrageInput/EmojiPicker/EmojiPicker.vue +1 -1
  178. package/src/components/BarrageInput/MessageInputState.ts +160 -0
  179. package/src/components/BarrageInput/TextEditor/TextEditor.vue +1 -1
  180. package/src/components/BarrageInput/type.ts +26 -0
  181. package/src/components/BarrageInput/utils.ts +45 -0
  182. package/src/components/BarrageList/BarrageList.vue +61 -117
  183. package/src/components/BarrageList/BarrageListH5.vue +75 -159
  184. package/src/components/BarrageList/BarrageListState.ts +223 -0
  185. package/src/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue +8 -55
  186. package/src/components/BarrageList/Message/MessageLayout/MessageLayout.vue +19 -44
  187. package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +69 -96
  188. package/src/components/BarrageList/Message/TextMessage/emoji.ts +132 -0
  189. package/src/components/CameraButton/index.vue +0 -1
  190. package/src/components/CoGuestPanel/CoGuestPanel.vue +16 -91
  191. package/src/components/CoHostPanel/BattlePanel.vue +4 -7
  192. package/src/components/CoHostPanel/CoHostPanel.vue +11 -3
  193. package/src/components/CoHostPanel/ConfigSettingPanel.vue +2 -8
  194. package/src/components/CoHostPanel/ConnectionPanel.vue +41 -37
  195. package/src/components/CoHostPanel/RecommendHostList.vue +12 -13
  196. package/src/components/CoHostPanel/constants.ts +3 -0
  197. package/src/components/CoHostPanel/i18n/en-US/index.ts +1 -0
  198. package/src/components/CoHostPanel/i18n/zh-CN/index.ts +2 -1
  199. package/src/components/LiveAudienceList/LiveAudienceList.vue +4 -5
  200. package/src/components/LiveAudienceList/LiveAudienceListH5.vue +2 -2
  201. package/src/components/LiveAudienceList/UserActionMenu.vue +7 -48
  202. package/src/components/LiveList/LiveList.vue +5 -5
  203. package/src/components/LiveList/LiveListH5.vue +6 -6
  204. package/src/components/LiveScenePanel/index.vue +2 -2
  205. package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.vue +10 -15
  206. package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.vue +30 -31
  207. package/src/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.vue +5 -3
  208. package/src/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.vue +1 -1
  209. package/src/components/{LiveCoreView → LiveView}/PlayerControl/MultiResolution.vue +9 -3
  210. package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.vue +10 -2
  211. package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControlState.ts +233 -259
  212. package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/domHelpers.ts +64 -0
  213. package/src/components/{LiveCoreView → LiveView}/i18n/en-US/index.ts +3 -2
  214. package/src/components/{LiveCoreView → LiveView}/i18n/zh-CN/index.ts +3 -2
  215. package/src/components/{LiveCoreView → LiveView}/index.ts +5 -2
  216. package/src/components/{LiveCoreView → LiveView}/index.vue +3 -3
  217. package/src/components/MicButton/index.vue +3 -3
  218. package/src/components/StreamMixer/LocalMixer/index.vue +6 -8
  219. package/src/components/StreamMixer/index.vue +1 -1
  220. package/src/components/StreamView/Layout/CustomLayout.vue +2 -2
  221. package/src/components/StreamView/Layout/FloatLayout.vue +88 -83
  222. package/src/components/StreamView/index.vue +28 -14
  223. package/src/components/StreamView/manager/mediaManager.ts +38 -42
  224. package/src/components/VideoSetting/CameraSelect.vue +1 -2
  225. package/src/components/VideoSetting/VideoMediaControl.vue +1 -1
  226. package/src/components/VideoSetting/VideoPreview.vue +1 -2
  227. package/src/components/VideoSetting/VideoProfile.vue +1 -1
  228. package/src/components/VideoSetting/VideoSettingTab.vue +9 -5
  229. package/src/components/VideoSettingPanel/CameraSelect.vue +1 -2
  230. package/src/components/VideoSettingPanel/VideoProfile.vue +7 -7
  231. package/src/hooks/useRoomEngine.ts +1 -1
  232. package/src/report/MetricsKey.ts +16 -0
  233. package/src/report/dataReport.ts +55 -0
  234. package/src/report/index.ts +7 -0
  235. package/src/rtc/index.ts +8 -10
  236. package/src/types/audience.ts +27 -1
  237. package/src/types/battle.ts +87 -4
  238. package/src/types/coGuest.ts +87 -5
  239. package/src/types/device.ts +41 -16
  240. package/src/types/index.ts +2 -2
  241. package/src/types/live.ts +41 -22
  242. package/src/types/seat.ts +28 -4
  243. package/src/utils/eventCenter.ts +249 -0
  244. package/dist/DialogPortal-CvJcEAsn.js +0 -417
  245. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.js +0 -23
  246. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.vue.d.ts +0 -30
  247. package/dist/components/BarrageList/Message/FaceMessage/index.d.ts +0 -3
  248. package/dist/components/BarrageList/Message/FaceMessage/index.js +0 -4
  249. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.js +0 -4
  250. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue.d.ts +0 -16
  251. package/dist/components/BarrageList/Message/GroupTipMessage/index.d.ts +0 -3
  252. package/dist/components/BarrageList/Message/GroupTipMessage/index.js +0 -25
  253. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.js +0 -71
  254. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.vue.d.ts +0 -34
  255. package/dist/components/BarrageList/Message/ImageMessage/index.d.ts +0 -3
  256. package/dist/components/BarrageList/Message/ImageMessage/index.js +0 -4
  257. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.js +0 -9
  258. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.vue.d.ts +0 -2
  259. package/dist/components/BarrageList/Message/MergerMessage/index.d.ts +0 -3
  260. package/dist/components/BarrageList/Message/MergerMessage/index.js +0 -4
  261. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.js +0 -40
  262. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue.d.ts +0 -54
  263. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.js +0 -26
  264. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue.d.ts +0 -15
  265. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.d.ts +0 -3
  266. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.js +0 -4
  267. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.js +0 -41
  268. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue.d.ts +0 -35
  269. package/dist/components/BarrageList/Message/RecalledMessage/index.d.ts +0 -3
  270. package/dist/components/BarrageList/Message/RecalledMessage/index.js +0 -4
  271. package/dist/components/BarrageList/MessageForward/ForwardListItem.js +0 -45
  272. package/dist/components/BarrageList/MessageForward/ForwardListItem.vue.d.ts +0 -17
  273. package/dist/components/BarrageList/MessageForward/MessageForward.js +0 -203
  274. package/dist/components/BarrageList/MessageForward/MessageForward.vue.d.ts +0 -2
  275. package/dist/components/BarrageList/MessageForward/index.d.ts +0 -3
  276. package/dist/components/BarrageList/MessageForward/index.js +0 -4
  277. package/dist/components/LiveCoreView/PlayerControl/MultiResolution.js +0 -78
  278. package/dist/components/LiveCoreView/PlayerControl/MultiResolution.vue.d.ts +0 -2
  279. package/dist/components/LiveCoreView/PlayerControl/PlayerControl.js +0 -168
  280. package/dist/components/LiveCoreView/PlayerControl/PlayerControlState.js +0 -267
  281. package/dist/components/LiveCoreView/PlayerControl/utils/domHelpers.js +0 -99
  282. package/dist/components/LiveCoreView/index.d.ts +0 -4
  283. package/dist/components/StreamView/Layout/MixLayout.js +0 -89
  284. package/dist/components/StreamView/Layout/MixLayout.vue.d.ts +0 -31
  285. package/dist/states/BarrageListState/BarrageListState.d.ts +0 -26
  286. package/dist/states/BarrageListState/BarrageListState.js +0 -122
  287. package/dist/states/BarrageListState/index.d.ts +0 -1
  288. package/dist/states/BarrageListState/index.js +0 -4
  289. package/dist/states/BattleState.js +0 -117
  290. package/dist/states/DeviceState.js +0 -296
  291. package/dist/states/LiveState/index.js +0 -254
  292. package/dist/states/VideoMixerState.js +0 -260
  293. package/src/components/BarrageList/Message/FaceMessage/FaceMessage.vue +0 -43
  294. package/src/components/BarrageList/Message/FaceMessage/index.ts +0 -3
  295. package/src/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue +0 -55
  296. package/src/components/BarrageList/Message/GroupTipMessage/index.ts +0 -3
  297. package/src/components/BarrageList/Message/ImageMessage/ImageMessage.vue +0 -181
  298. package/src/components/BarrageList/Message/ImageMessage/index.ts +0 -3
  299. package/src/components/BarrageList/Message/MergerMessage/MergerMessage.vue +0 -6
  300. package/src/components/BarrageList/Message/MergerMessage/index.ts +0 -3
  301. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +0 -70
  302. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue +0 -40
  303. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/index.ts +0 -3
  304. package/src/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue +0 -82
  305. package/src/components/BarrageList/Message/RecalledMessage/index.ts +0 -3
  306. package/src/components/BarrageList/MessageForward/ForwardListItem.vue +0 -67
  307. package/src/components/BarrageList/MessageForward/MessageForward.vue +0 -388
  308. package/src/components/BarrageList/MessageForward/index.ts +0 -3
  309. package/src/components/StreamView/Layout/MixLayout.vue +0 -144
  310. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.vue.d.ts +0 -0
  311. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.vue.d.ts +0 -0
  312. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.vue.d.ts +0 -0
  313. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.vue.d.ts +0 -0
  314. /package/dist/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.vue.d.ts +0 -0
  315. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.vue.d.ts +0 -0
  316. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.vue.d.ts +0 -0
  317. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControlState.d.ts +0 -0
  318. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/index.d.ts +0 -0
  319. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/index.js +0 -0
  320. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.d.ts +0 -0
  321. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.js +0 -0
  322. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.d.ts +0 -0
  323. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.js +0 -0
  324. /package/dist/components/{LiveCoreView → LiveView}/i18n/index.d.ts +0 -0
  325. /package/dist/components/{LiveCoreView → LiveView}/i18n/index.js +0 -0
  326. /package/dist/components/{LiveCoreView → LiveView}/index.vue.d.ts +0 -0
  327. /package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.vue +0 -0
  328. /package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.vue +0 -0
  329. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.module.scss +0 -0
  330. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/index.ts +0 -0
  331. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.ts +0 -0
  332. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.ts +0 -0
  333. /package/src/components/{LiveCoreView → LiveView}/assets/img/defeat.png +0 -0
  334. /package/src/components/{LiveCoreView → LiveView}/assets/img/draw.png +0 -0
  335. /package/src/components/{LiveCoreView → LiveView}/assets/img/victory.png +0 -0
  336. /package/src/components/{LiveCoreView → LiveView}/assets/svg/BattleOrdinaryBadge.svg +0 -0
  337. /package/src/components/{LiveCoreView → LiveView}/assets/svg/BattleTopBadge.svg +0 -0
  338. /package/src/components/{LiveCoreView → LiveView}/assets/svg/blueBkg.svg +0 -0
  339. /package/src/components/{LiveCoreView → LiveView}/assets/svg/redBkg.svg +0 -0
  340. /package/src/components/{LiveCoreView → LiveView}/assets/svg/s.svg +0 -0
  341. /package/src/components/{LiveCoreView → LiveView}/assets/svg/v.svg +0 -0
  342. /package/src/components/{LiveCoreView → LiveView}/i18n/index.ts +0 -0
@@ -2,27 +2,27 @@ import type { Ref } from 'vue';
2
2
  import { computed, ref, watch } from 'vue';
3
3
  import { TRTCCloud, TUIVideoQuality } from '@tencentcloud/tuiroom-engine-js';
4
4
  import useRoomEngine from '../../../hooks/useRoomEngine';
5
- import useLiveState from '../../../states/LiveState';
6
5
  import { useLiveSeatState } from '../../../states/LiveSeatState';
6
+ import { useLiveListState } from '../../../states/LiveListState';
7
7
  // Import utility modules
8
- import {
9
- getDeviceType,
8
+ import {
9
+ getDeviceType,
10
10
  getCurrentOrientation,
11
11
  shouldRotateToLandscapeForFullscreen,
12
12
  hadLandscapeRotationToUndo,
13
13
  } from './utils/deviceDetection';
14
- import {
15
- FullscreenManager,
16
- FullscreenResult,
14
+ import {
15
+ DOMElementGetter,
16
+ EventListenerManager,
17
+ } from './utils/domHelpers';
18
+ import {
19
+ FullscreenManager,
17
20
  FullscreenMode,
18
21
  OrientationManager,
19
- StyleManager
22
+ StyleManager,
20
23
  } from './utils/fullscreenManager';
21
- import {
22
- DOMElementGetter,
23
- EventListenerManager
24
- } from './utils/domHelpers';
25
- import { LiveStatus } from '../../../types';
24
+ import type {
25
+ FullscreenResult } from './utils/fullscreenManager';
26
26
 
27
27
  // Player fill mode enum
28
28
  export enum FillMode {
@@ -48,7 +48,7 @@ export interface PlayerControlState {
48
48
  isLandscapeStyleMode: Ref<boolean>;
49
49
  isPictureInPicture: Ref<boolean>;
50
50
  currentVolume: Ref<number>;
51
-
51
+
52
52
  // Resolution state properties
53
53
  resolutionList: Ref<Resolution[]>;
54
54
  currentResolution: Ref<Resolution | undefined>;
@@ -98,7 +98,7 @@ const roomEngine = useRoomEngine();
98
98
  */
99
99
  export function usePlayerControlState(): PlayerControlState {
100
100
  // Dependency injection
101
- const { localLiveStatus } = useLiveState();
101
+ const { currentLive } = useLiveListState();
102
102
  const { canvas } = useLiveSeatState();
103
103
 
104
104
  // Event listener management
@@ -108,11 +108,11 @@ export function usePlayerControlState(): PlayerControlState {
108
108
  const orientationListenerId = `player-control-${Date.now()}`;
109
109
 
110
110
  // Computed properties
111
- const isLandscapeStream = computed(() =>
112
- canvas.value ? canvas.value.width > canvas.value.height : false
111
+ const isLandscapeStream = computed(() =>
112
+ canvas.value ? canvas.value.width > canvas.value.height : false,
113
113
  );
114
- const isPortraitStream = computed(() =>
115
- canvas.value ? canvas.value.width < canvas.value.height : false
114
+ const isPortraitStream = computed(() =>
115
+ canvas.value ? canvas.value.width < canvas.value.height : false,
116
116
  );
117
117
 
118
118
  // Device information
@@ -124,7 +124,7 @@ export function usePlayerControlState(): PlayerControlState {
124
124
  const withErrorHandling = async <T>(
125
125
  operation: () => Promise<T>,
126
126
  operationName: string,
127
- fallbackValue: T
127
+ fallbackValue: T,
128
128
  ): Promise<T> => {
129
129
  try {
130
130
  return await operation();
@@ -160,47 +160,43 @@ export function usePlayerControlState(): PlayerControlState {
160
160
  }
161
161
  };
162
162
 
163
- const resume = async (): Promise<boolean> => {
164
- return withErrorHandling(async () => {
165
- const video = DOMElementGetter.getVideoElement();
166
- if (!video) {
167
- throw new Error('Video element not found');
168
- }
169
- if (DOMElementGetter.hasTcPlayerElement()) {
170
- await video.play();
171
- } else {
172
- const trtcCloudMap = TRTCCloud.subCloudMap;
173
- trtcCloudMap.forEach((trtcCloud: TRTCCloud) => {
174
- const trtc = trtcCloud?._trtc;
175
- trtc?.callExperimentalAPI('resumeRemotePlayer', { userId: '*'})
176
- })
177
- }
178
- isPlaying.value = true;
179
- console.log('Video playback resumed');
180
- return true;
181
- }, 'Resume playback', false);
182
- };
163
+ const resume = async (): Promise<boolean> => withErrorHandling(async () => {
164
+ const video = DOMElementGetter.getVideoElement();
165
+ if (!video) {
166
+ throw new Error('Video element not found');
167
+ }
168
+ if (DOMElementGetter.hasTcPlayerElement()) {
169
+ await video.play();
170
+ } else {
171
+ const trtcCloudMap = TRTCCloud.subCloudMap;
172
+ trtcCloudMap.forEach((trtcCloud: TRTCCloud) => {
173
+ const trtc = trtcCloud?._trtc;
174
+ trtc?.callExperimentalAPI('resumeRemotePlayer', { userId: '*' });
175
+ });
176
+ }
177
+ isPlaying.value = true;
178
+ console.log('Video playback resumed');
179
+ return true;
180
+ }, 'Resume playback', false);
183
181
 
184
- const pause = async (): Promise<boolean> => {
185
- return withErrorHandling(async () => {
186
- const video = DOMElementGetter.getVideoElement();
187
- if (!video) {
188
- throw new Error('Video element not found');
189
- }
190
- if (DOMElementGetter.hasTcPlayerElement()) {
191
- await video.pause();
192
- } else {
193
- const trtcCloudMap = TRTCCloud.subCloudMap;
194
- trtcCloudMap.forEach((trtcCloud: TRTCCloud) => {
195
- const trtc = trtcCloud?._trtc;
196
- trtc?.callExperimentalAPI('pauseRemotePlayer', { userId: '*'})
197
- })
198
- }
199
- isPlaying.value = false;
200
- console.log('Video playback paused');
201
- return true;
202
- }, 'Pause playback', false);
203
- };
182
+ const pause = async (): Promise<boolean> => withErrorHandling(async () => {
183
+ const video = DOMElementGetter.getVideoElement();
184
+ if (!video) {
185
+ throw new Error('Video element not found');
186
+ }
187
+ if (DOMElementGetter.hasTcPlayerElement()) {
188
+ await video.pause();
189
+ } else {
190
+ const trtcCloudMap = TRTCCloud.subCloudMap;
191
+ trtcCloudMap.forEach((trtcCloud: TRTCCloud) => {
192
+ const trtc = trtcCloud?._trtc;
193
+ trtc?.callExperimentalAPI('pauseRemotePlayer', { userId: '*' });
194
+ });
195
+ }
196
+ isPlaying.value = false;
197
+ console.log('Video playback paused');
198
+ return true;
199
+ }, 'Pause playback', false);
204
200
 
205
201
  /**
206
202
  * Handle orientation change
@@ -226,7 +222,7 @@ export function usePlayerControlState(): PlayerControlState {
226
222
  newOrientation,
227
223
  deviceType,
228
224
  isLandscapeStream: isLandscapeStream.value,
229
- isFullscreen: isFullscreen.value
225
+ isFullscreen: isFullscreen.value,
230
226
  });
231
227
 
232
228
  // Smart adjustment of landscape styles
@@ -236,193 +232,186 @@ export function usePlayerControlState(): PlayerControlState {
236
232
  /**
237
233
  * Fullscreen control methods
238
234
  */
239
- const requestFullscreen = async (): Promise<FullscreenResult> => {
240
- return withErrorHandling(async () => {
241
- const elements = DOMElementGetter.getAllElements();
242
- const validation = DOMElementGetter.validateElements(elements);
243
-
244
- if (!validation.isValid) {
245
- throw new Error(`Missing required DOM elements: ${validation.missingElements.join(', ')}`);
246
- }
235
+ const requestFullscreen = async (): Promise<FullscreenResult> => withErrorHandling(async () => {
236
+ const elements = DOMElementGetter.getAllElements();
237
+ const validation = DOMElementGetter.validateElements(elements);
247
238
 
248
- const currentOrientation = getCurrentOrientation();
249
- const shouldRotateToLandscape = shouldRotateToLandscapeForFullscreen(deviceType, isLandscapeStream.value);
239
+ if (!validation.isValid) {
240
+ throw new Error(`Missing required DOM elements: ${validation.missingElements.join(', ')}`);
241
+ }
250
242
 
251
- console.log('Request fullscreen:', {
252
- deviceType,
253
- currentOrientation,
254
- streamType: isLandscapeStream.value ? 'landscape stream' : isPortraitStream.value ? 'portrait stream' : 'unknown',
255
- shouldRotate: shouldRotateToLandscape,
256
- reason: shouldRotateToLandscape ? 'Mobile device in portrait with landscape stream' :
257
- currentOrientation === 'landscape' ? 'Already in landscape orientation' :
258
- !isLandscapeStream.value ? 'Not a landscape stream' :
259
- 'Desktop device or other reason'
260
- });
243
+ const currentOrientation = getCurrentOrientation();
244
+ const shouldRotateToLandscape = shouldRotateToLandscapeForFullscreen(deviceType, isLandscapeStream.value);
261
245
 
262
- const result: FullscreenResult = await FullscreenManager.requestFullscreen(
263
- elements.container!,
264
- elements.view!,
265
- deviceType,
266
- isPortraitStream.value,
267
- shouldRotateToLandscape
268
- );
269
-
270
- if (result.success) {
271
- isFullscreen.value = true;
272
- console.log(`Fullscreen request successful (${result.mode})`);
273
- } else {
274
- console.error('Fullscreen request failed:', result.error);
275
- }
276
- isLandscapeStyleMode.value = result.shouldRotateToLandscape;
277
- return result;
278
- }, 'Request fullscreen', { success: false, mode: FullscreenMode.CSS_SIMULATED, shouldRotateToLandscape: false });
279
- };
246
+ console.log('Request fullscreen:', {
247
+ deviceType,
248
+ currentOrientation,
249
+ streamType: isLandscapeStream.value ? 'landscape stream' : isPortraitStream.value ? 'portrait stream' : 'unknown',
250
+ shouldRotate: shouldRotateToLandscape,
251
+ reason: shouldRotateToLandscape
252
+ ? 'Mobile device in portrait with landscape stream'
253
+ : currentOrientation === 'landscape'
254
+ ? 'Already in landscape orientation'
255
+ : !isLandscapeStream.value
256
+ ? 'Not a landscape stream'
257
+ : 'Desktop device or other reason',
258
+ });
280
259
 
281
- const exitFullscreen = async (): Promise<FullscreenResult> => {
282
- return withErrorHandling(async () => {
283
- const elements = DOMElementGetter.getAllElements();
284
- if (!elements.view) {
285
- throw new Error('live-core-view element not found');
286
- }
260
+ const result: FullscreenResult = await FullscreenManager.requestFullscreen(
261
+ elements.container!,
262
+ elements.view!,
263
+ deviceType,
264
+ isPortraitStream.value,
265
+ shouldRotateToLandscape,
266
+ );
267
+
268
+ if (result.success) {
269
+ isFullscreen.value = true;
270
+ console.log(`Fullscreen request successful (${result.mode})`);
271
+ } else {
272
+ console.error('Fullscreen request failed:', result.error);
273
+ }
274
+ isLandscapeStyleMode.value = result.shouldRotateToLandscape;
275
+ return result;
276
+ }, 'Request fullscreen', { success: false, mode: FullscreenMode.CSS_SIMULATED, shouldRotateToLandscape: false });
287
277
 
288
- const currentOrientation = getCurrentOrientation();
289
- const hadLandscapeRotation = hadLandscapeRotationToUndo(deviceType, isLandscapeStream.value);
278
+ const exitFullscreen = async (): Promise<FullscreenResult> => withErrorHandling(async () => {
279
+ const elements = DOMElementGetter.getAllElements();
280
+ if (!elements.view) {
281
+ throw new Error('live-core-view element not found');
282
+ }
290
283
 
291
- console.log('Exit fullscreen:', {
292
- deviceType,
293
- currentOrientation,
294
- streamType: isLandscapeStream.value ? 'landscape stream' : isPortraitStream.value ? 'portrait stream' : 'unknown',
295
- hadLandscapeRotation,
296
- reason: hadLandscapeRotation ? 'Mobile device with landscape stream in landscape mode' :
297
- currentOrientation === 'portrait' ? 'Already in portrait orientation' :
298
- !isLandscapeStream.value ? 'Not a landscape stream' :
299
- 'Desktop device or other reason'
300
- });
284
+ const currentOrientation = getCurrentOrientation();
285
+ const hadLandscapeRotation = hadLandscapeRotationToUndo(deviceType, isLandscapeStream.value);
301
286
 
302
- const result: FullscreenResult = await FullscreenManager.exitFullscreen(
303
- elements.view,
304
- deviceType,
305
- hadLandscapeRotation
306
- );
287
+ console.log('Exit fullscreen:', {
288
+ deviceType,
289
+ currentOrientation,
290
+ streamType: isLandscapeStream.value ? 'landscape stream' : isPortraitStream.value ? 'portrait stream' : 'unknown',
291
+ hadLandscapeRotation,
292
+ reason: hadLandscapeRotation
293
+ ? 'Mobile device with landscape stream in landscape mode'
294
+ : currentOrientation === 'portrait'
295
+ ? 'Already in portrait orientation'
296
+ : !isLandscapeStream.value
297
+ ? 'Not a landscape stream'
298
+ : 'Desktop device or other reason',
299
+ });
307
300
 
308
- // For standard fullscreen, state is updated by event listeners
309
- // For CSS simulated fullscreen, update state directly
310
- if (result.mode === FullscreenMode.CSS_SIMULATED) {
311
- isFullscreen.value = false;
312
- }
301
+ const result: FullscreenResult = await FullscreenManager.exitFullscreen(
302
+ elements.view,
303
+ deviceType,
304
+ hadLandscapeRotation,
305
+ );
313
306
 
314
- if (result.success) {
315
- console.log(`Fullscreen exit successful (${result.mode})`);
316
- } else {
317
- console.error('Fullscreen exit failed:', result.error);
318
- }
319
- isLandscapeStyleMode.value = false;
320
- return result;
321
- }, 'Exit fullscreen', { success: false, mode: FullscreenMode.CSS_SIMULATED, shouldRotateToLandscape: false });
322
- };
307
+ // For standard fullscreen, state is updated by event listeners
308
+ // For CSS simulated fullscreen, update state directly
309
+ if (result.mode === FullscreenMode.CSS_SIMULATED) {
310
+ isFullscreen.value = false;
311
+ }
312
+
313
+ if (result.success) {
314
+ console.log(`Fullscreen exit successful (${result.mode})`);
315
+ } else {
316
+ console.error('Fullscreen exit failed:', result.error);
317
+ }
318
+ isLandscapeStyleMode.value = false;
319
+ return result;
320
+ }, 'Exit fullscreen', { success: false, mode: FullscreenMode.CSS_SIMULATED, shouldRotateToLandscape: false });
323
321
 
324
322
  /**
325
323
  * Picture-in-picture control methods
326
324
  */
327
- const requestPictureInPicture = async (): Promise<boolean> => {
328
- return withErrorHandling(async () => {
329
- const video = DOMElementGetter.getVideoElement();
330
- if (!video) {
331
- throw new Error('Video element not found');
332
- }
325
+ const requestPictureInPicture = async (): Promise<boolean> => withErrorHandling(async () => {
326
+ const video = DOMElementGetter.getVideoElement();
327
+ if (!video) {
328
+ throw new Error('Video element not found');
329
+ }
333
330
 
334
- if (!video.requestPictureInPicture) {
335
- throw new Error('Picture-in-picture not supported in current environment');
336
- }
331
+ if (!video.requestPictureInPicture) {
332
+ throw new Error('Picture-in-picture not supported in current environment');
333
+ }
337
334
 
338
- // Ensure event listeners are set
339
- setupVideoEventListeners();
340
- await video.requestPictureInPicture();
341
-
342
- console.log('Picture-in-picture request successful');
343
- return true;
344
- }, 'Request picture-in-picture', false);
345
- };
335
+ // Ensure event listeners are set
336
+ setupVideoEventListeners();
337
+ await video.requestPictureInPicture();
346
338
 
347
- const exitPictureInPicture = async (): Promise<boolean> => {
348
- return withErrorHandling(async () => {
349
- if (!document.exitPictureInPicture) {
350
- throw new Error('Exit picture-in-picture not supported in current environment');
351
- }
339
+ console.log('Picture-in-picture request successful');
340
+ return true;
341
+ }, 'Request picture-in-picture', false);
352
342
 
353
- await document.exitPictureInPicture();
354
- console.log('Picture-in-picture exit successful');
355
- return true;
356
- }, 'Exit picture-in-picture', false);
357
- };
343
+ const exitPictureInPicture = async (): Promise<boolean> => withErrorHandling(async () => {
344
+ if (!document.exitPictureInPicture) {
345
+ throw new Error('Exit picture-in-picture not supported in current environment');
346
+ }
347
+
348
+ await document.exitPictureInPicture();
349
+ console.log('Picture-in-picture exit successful');
350
+ return true;
351
+ }, 'Exit picture-in-picture', false);
358
352
 
359
353
  /**
360
354
  * Resolution control methods
361
355
  */
362
- const switchResolution = async (resolution: Resolution): Promise<boolean> => {
363
- return withErrorHandling(async () => {
364
- if (!roomEngine.instance) {
365
- throw new Error('Room engine instance not available');
366
- }
367
- await roomEngine.instance.callExperimentalAPI(
368
- JSON.stringify({
369
- api: 'switchPlaybackQuality',
370
- params: {
371
- quality: resolution,
372
- autoSwitch: false,
373
- },
374
- }),
375
- );
376
- if (!isPlaying.value) {
377
- isPlaying.value = true;
378
- }
379
- currentResolution.value = resolution;
380
- console.log(`Resolution switched to: ${resolution}`);
381
- return true;
382
- }, 'Switch resolution', false);
383
- };
356
+ const switchResolution = async (resolution: Resolution): Promise<boolean> => withErrorHandling(async () => {
357
+ if (!roomEngine.instance) {
358
+ throw new Error('Room engine instance not available');
359
+ }
360
+ await roomEngine.instance.callExperimentalAPI(
361
+ JSON.stringify({
362
+ api: 'switchPlaybackQuality',
363
+ params: {
364
+ quality: resolution,
365
+ autoSwitch: false,
366
+ },
367
+ }),
368
+ );
369
+ if (!isPlaying.value) {
370
+ isPlaying.value = true;
371
+ }
372
+ currentResolution.value = resolution;
373
+ console.log(`Resolution switched to: ${resolution}`);
374
+ return true;
375
+ }, 'Switch resolution', false);
376
+
377
+ const getResolutionList = async (roomId: string): Promise<Resolution[]> => withErrorHandling(async () => {
378
+ if (!roomEngine.instance) {
379
+ throw new Error('Room engine instance not available');
380
+ }
384
381
 
385
- const getResolutionList = async (roomId: string): Promise<Resolution[]> => {
386
- return withErrorHandling(async () => {
387
- if (!roomEngine.instance) {
388
- throw new Error('Room engine instance not available');
389
- }
390
-
391
- const resolutions = await roomEngine.instance.callExperimentalAPI(
392
- JSON.stringify({
393
- api: 'queryPlaybackQualityList',
394
- params: {
395
- roomId: roomId,
396
- },
397
- }),
398
- );
399
-
400
- console.log(`Retrieved resolution list for room ${roomId}:`, resolutions);
401
- return (resolutions || []) as Resolution[];
402
- }, 'Get resolution list', []);
403
- };
382
+ const resolutions = await roomEngine.instance.callExperimentalAPI(
383
+ JSON.stringify({
384
+ api: 'queryPlaybackQualityList',
385
+ params: {
386
+ roomId,
387
+ },
388
+ }),
389
+ );
404
390
 
391
+ console.log(`Retrieved resolution list for room ${roomId}:`, resolutions);
392
+ return (resolutions || []) as Resolution[];
393
+ }, 'Get resolution list', []);
405
394
 
406
- const initializeResolution = async (roomId: string, applyResolution: boolean = true): Promise<void> => {
395
+ const initializeResolution = async (roomId: string, applyResolution = true): Promise<void> => {
407
396
  try {
408
397
  // Check if resolution has been initialized for this room
409
398
  const initializedKey = `${RESOLUTION_INITIALIZED_PREFIX}_${roomId}`;
410
399
  const hasInitialized = localStorage.getItem(initializedKey) === 'true';
411
-
400
+
412
401
  // Get available resolutionList
413
402
  const availableResolutions = await getResolutionList(roomId);
414
403
  resolutionList.value = availableResolutions;
415
-
404
+
416
405
  if (availableResolutions.length === 0) {
417
406
  console.warn('No resolutions available for room:', roomId);
418
407
  return;
419
408
  }
420
-
409
+
421
410
  // Always set current resolution if it's not set or if it's not in the available list
422
411
  if (!currentResolution.value || !availableResolutions.includes(currentResolution.value)) {
423
412
  currentResolution.value = availableResolutions[0];
424
413
  }
425
-
414
+
426
415
  // Only apply resolution if it hasn't been initialized for this room or explicitly requested
427
416
  const shouldApplyResolution = applyResolution && !hasInitialized && currentResolution.value !== undefined;
428
417
  if (shouldApplyResolution) {
@@ -430,9 +419,9 @@ export function usePlayerControlState(): PlayerControlState {
430
419
  // Mark as initialized for this room
431
420
  localStorage.setItem(initializedKey, 'true');
432
421
  }
433
-
422
+
434
423
  console.log(`Resolution initialized for room ${roomId}:`, {
435
- availableResolutions: availableResolutions,
424
+ availableResolutions,
436
425
  currentResolution: currentResolution.value,
437
426
  applied: shouldApplyResolution,
438
427
  hasInitialized,
@@ -445,38 +434,22 @@ export function usePlayerControlState(): PlayerControlState {
445
434
  /**
446
435
  * Other control methods
447
436
  */
448
- const setVolume = async (volume: number): Promise<boolean> => {
449
- return withErrorHandling(async () => {
450
- if (volume < 0 || volume > 1) {
451
- throw new Error('Volume value must be between 0-1');
452
- }
453
- const trtcCloudMap = TRTCCloud.subCloudMap;
454
- if(volume === 0) {
455
- trtcCloudMap.forEach((trtcCloud: TRTCCloud) => {
456
- const trtc = trtcCloud?._trtc;
457
- trtc?.muteRemoteAudio('*', true)
458
- })
459
- } else {
460
- trtcCloudMap.forEach((trtcCloud: TRTCCloud) => {
461
- const trtc = trtcCloud?._trtc;
462
- trtc?.muteRemoteAudio('*', false)
463
- })
464
- }
465
- roomEngine.instance?.setAudioPlayoutVolume({ volume: volume * 100 });
466
- currentVolume.value = volume;
467
- console.log(`Video volume set to: ${volume}`);
468
- return true;
469
- }, 'Set volume', false);
470
- };
471
-
472
- const changeFillMode = async (fillMode: FillMode): Promise<boolean> => {
473
- return withErrorHandling(async () => {
474
- currentFillMode.value = fillMode;
475
- console.log(`Fill mode changed to: ${fillMode}`);
476
- // TODO: Implement actual fill mode logic
477
- return true;
478
- }, 'Change fill mode', false);
479
- };
437
+ const setVolume = async (volume: number): Promise<boolean> => withErrorHandling(async () => {
438
+ if (volume < 0 || volume > 1) {
439
+ throw new Error('Volume value must be between 0-1');
440
+ }
441
+ await roomEngine.instance?.setAudioPlayoutVolume({ volume: volume * 100 });
442
+ currentVolume.value = volume;
443
+ console.log(`Video volume set to: ${volume}`);
444
+ return true;
445
+ }, 'Set volume', false);
446
+
447
+ const changeFillMode = async (fillMode: FillMode): Promise<boolean> => withErrorHandling(async () => {
448
+ currentFillMode.value = fillMode;
449
+ console.log(`Fill mode changed to: ${fillMode}`);
450
+ // TODO: Implement actual fill mode logic
451
+ return true;
452
+ }, 'Change fill mode', false);
480
453
 
481
454
  /**
482
455
  * Handle style cleanup when exiting fullscreen
@@ -492,7 +465,7 @@ export function usePlayerControlState(): PlayerControlState {
492
465
  console.log('Executing fullscreen exit style cleanup:', {
493
466
  deviceType,
494
467
  hasLandscapeStream: isLandscapeStream.value,
495
- currentOrientation: getCurrentOrientation()
468
+ currentOrientation: getCurrentOrientation(),
496
469
  });
497
470
 
498
471
  // Remove all fullscreen related styles
@@ -501,11 +474,11 @@ export function usePlayerControlState(): PlayerControlState {
501
474
 
502
475
  // If mobile device, try to unlock screen orientation
503
476
  if (deviceType !== 'desktop') {
504
- OrientationManager.unlockOrientation().catch(error => {
477
+ OrientationManager.unlockOrientation().catch((error) => {
505
478
  console.warn('Failed to unlock orientation during cleanup:', error);
506
479
  });
507
480
  }
508
-
481
+
509
482
  isLandscapeStyleMode.value = false;
510
483
  console.log('Fullscreen exit style cleanup completed');
511
484
  } catch (error) {
@@ -520,13 +493,13 @@ export function usePlayerControlState(): PlayerControlState {
520
493
  const handleFullscreenChange = () => {
521
494
  const isCurrentlyFullscreen = !!document.fullscreenElement;
522
495
  const wasFullscreen = isFullscreen.value;
523
-
496
+
524
497
  console.log('Fullscreen state change:', {
525
498
  fullscreenElement: document.fullscreenElement,
526
499
  isCurrentlyFullscreen,
527
500
  previousValue: wasFullscreen,
528
501
  deviceType,
529
- changeType: isCurrentlyFullscreen ? 'entered' : 'exited'
502
+ changeType: isCurrentlyFullscreen ? 'entered' : 'exited',
530
503
  });
531
504
 
532
505
  // Update state
@@ -563,7 +536,9 @@ export function usePlayerControlState(): PlayerControlState {
563
536
 
564
537
  const setupVideoEventListeners = (): void => {
565
538
  const video = DOMElementGetter.getVideoElement();
566
- if (!video) return;
539
+ if (!video) {
540
+ return;
541
+ }
567
542
 
568
543
  const handleEnterPictureInPicture = () => {
569
544
  console.log('Entered picture-in-picture mode');
@@ -640,13 +615,12 @@ export function usePlayerControlState(): PlayerControlState {
640
615
  eventManager.addListener('ended', video, 'ended', handleEnded);
641
616
  eventManager.addListener('loadstart', video, 'loadstart', handleLoadStart);
642
617
  eventManager.addListener('canplay', video, 'canplay', handleCanPlay);
643
-
618
+
644
619
  // Add additional state sync events
645
620
  eventManager.addListener('seeking', video, 'seeking', handleSeeking);
646
621
  eventManager.addListener('seeked', video, 'seeked', handleSeeked);
647
622
  eventManager.addListener('timeupdate', video, 'timeupdate', handleTimeUpdate);
648
623
  eventManager.addListener('volumechange', video, 'volumechange', handleVolumeChange);
649
-
650
624
  };
651
625
 
652
626
  /**
@@ -654,10 +628,10 @@ export function usePlayerControlState(): PlayerControlState {
654
628
  */
655
629
  const cleanup = (): void => {
656
630
  console.log('Cleaning up player control state...');
657
-
631
+
658
632
  // Remove orientation listener
659
633
  OrientationManager.removeOrientationListener(orientationListenerId);
660
-
634
+
661
635
  // Remove all event listeners
662
636
  eventManager.removeAllListeners();
663
637
  console.log(`Cleaned up ${eventManager.getListenerCount()} event listeners`);
@@ -666,16 +640,16 @@ export function usePlayerControlState(): PlayerControlState {
666
640
  // Initialize
667
641
  setupFullscreenEventListeners();
668
642
  setupVideoEventListeners();
669
-
643
+
670
644
  // Setup orientation listener for dynamic style adjustment
671
645
  OrientationManager.addOrientationListener(orientationListenerId, handleOrientationChange);
672
-
646
+
673
647
  // Initial state sync
674
648
  syncPlayingState();
675
649
  syncVolumeState();
676
650
 
677
- watch(localLiveStatus, (newStatus) => {
678
- if(newStatus === LiveStatus.Ended) {
651
+ watch(() => currentLive.value?.liveId, (liveId) => {
652
+ if (!liveId) {
679
653
  exitFullscreen();
680
654
  exitPictureInPicture();
681
655
  isPlaying.value = true;
@@ -683,7 +657,7 @@ export function usePlayerControlState(): PlayerControlState {
683
657
  isPictureInPicture.value = false;
684
658
  currentVolume.value = 1.0;
685
659
  }
686
- })
660
+ });
687
661
 
688
662
  // Return interface implementation
689
663
  return {
@@ -694,7 +668,7 @@ export function usePlayerControlState(): PlayerControlState {
694
668
  isLandscapeStyleMode,
695
669
  isPictureInPicture,
696
670
  currentVolume,
697
-
671
+
698
672
  // Resolution state
699
673
  resolutionList,
700
674
  currentResolution,
@@ -711,7 +685,7 @@ export function usePlayerControlState(): PlayerControlState {
711
685
  initializeResolution,
712
686
  setVolume,
713
687
  changeFillMode,
714
-
688
+
715
689
  // Cleanup
716
690
  cleanup,
717
691
  };