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
@@ -1,15 +1,20 @@
1
- import { DeviceStatus, DeviceStatusReason } from './device';
1
+ import { DeviceStatus } from './device';
2
2
 
3
3
  export type SeatUserInfo = {
4
- liveId: string;
5
4
  userId: string;
6
5
  userName: string;
7
6
  avatarUrl: string;
7
+ liveId: string;
8
8
  microphoneStatus: DeviceStatus;
9
- microphoneStatusReason: DeviceStatusReason;
9
+ allowOpenMicrophone: boolean;
10
10
  cameraStatus: DeviceStatus;
11
- cameraStatusReason: DeviceStatusReason;
11
+ allowOpenCamera: boolean;
12
12
  };
13
+ export declare enum Role {
14
+ Owner = 0,
15
+ Administrator = 1,
16
+ GeneralUser = 2
17
+ }
13
18
  export type RegionInfo = {
14
19
  x: number;
15
20
  y: number;
@@ -28,3 +33,17 @@ export interface LiveCanvas {
28
33
  height: number;
29
34
  background: string;
30
35
  }
36
+ export declare enum MoveSeatPolicy {
37
+ AbortWhenOccupied = 0,
38
+ ForceReplace = 1,
39
+ SwapPosition = 2
40
+ }
41
+ export declare enum DeviceControlPolicy {
42
+ UnlockOnly = 1
43
+ }
44
+ export declare enum LiveSeatEvent {
45
+ onLocalCameraOpenedByAdmin = "onLocalCameraOpenedByAdmin",
46
+ onLocalCameraClosedByAdmin = "onLocalCameraClosedByAdmin",
47
+ onLocalMicrophoneOpenedByAdmin = "onLocalMicrophoneOpenedByAdmin",
48
+ onLocalMicrophoneClosedByAdmin = "onLocalMicrophoneClosedByAdmin"
49
+ }
@@ -1 +1,7 @@
1
-
1
+ var r = /* @__PURE__ */ ((n) => (n[n.Owner = 0] = "Owner", n[n.Administrator = 1] = "Administrator", n[n.GeneralUser = 2] = "GeneralUser", n))(r || {}), o = /* @__PURE__ */ ((n) => (n[n.AbortWhenOccupied = 0] = "AbortWhenOccupied", n[n.ForceReplace = 1] = "ForceReplace", n[n.SwapPosition = 2] = "SwapPosition", n))(o || {}), a = /* @__PURE__ */ ((n) => (n[n.UnlockOnly = 1] = "UnlockOnly", n))(a || {}), d = /* @__PURE__ */ ((n) => (n.onLocalCameraOpenedByAdmin = "onLocalCameraOpenedByAdmin", n.onLocalCameraClosedByAdmin = "onLocalCameraClosedByAdmin", n.onLocalMicrophoneOpenedByAdmin = "onLocalMicrophoneOpenedByAdmin", n.onLocalMicrophoneClosedByAdmin = "onLocalMicrophoneClosedByAdmin", n))(d || {});
2
+ export {
3
+ a as DeviceControlPolicy,
4
+ d as LiveSeatEvent,
5
+ o as MoveSeatPolicy,
6
+ r as Role
7
+ };
@@ -0,0 +1,88 @@
1
+ /**
2
+ * 事件中心工具类
3
+ * 提供事件的订阅、取消订阅和触发功能
4
+ */
5
+ export type EventCallback<T = any> = (data?: T) => void;
6
+ export declare class EventCenter {
7
+ private listeners;
8
+ private listenerIdCounter;
9
+ /**
10
+ * 订阅事件
11
+ * @param event 事件名称
12
+ * @param callback 回调函数
13
+ * @returns 返回取消订阅的函数
14
+ */
15
+ on<T = any>(event: string, callback: EventCallback<T>): () => void;
16
+ /**
17
+ * 订阅事件(只触发一次)
18
+ * @param event 事件名称
19
+ * @param callback 回调函数
20
+ * @returns 返回取消订阅的函数
21
+ */
22
+ once<T = any>(event: string, callback: EventCallback<T>): () => void;
23
+ /**
24
+ * 取消订阅事件
25
+ * @param event 事件名称
26
+ * @param callbackOrId 回调函数或监听器ID
27
+ */
28
+ off(event: string, callbackOrId?: EventCallback | string): void;
29
+ /**
30
+ * 触发事件
31
+ * @param event 事件名称
32
+ * @param data 传递给回调函数的数据
33
+ */
34
+ emit<T = any>(event: string, data?: T): void;
35
+ /**
36
+ * 获取指定事件的监听器数量
37
+ * @param event 事件名称
38
+ * @returns 监听器数量
39
+ */
40
+ getListenerCount(event?: string): number;
41
+ /**
42
+ * 获取所有已注册的事件名称
43
+ * @returns 事件名称数组
44
+ */
45
+ getEventNames(): string[];
46
+ /**
47
+ * 检查是否有指定事件的监听器
48
+ * @param event 事件名称
49
+ * @returns 是否有监听器
50
+ */
51
+ hasListeners(event: string): boolean;
52
+ /**
53
+ * 清除所有事件监听器
54
+ */
55
+ clear(): void;
56
+ /**
57
+ * 清除指定事件的所有监听器
58
+ * @param event 事件名称
59
+ */
60
+ clearEvent(event: string): void;
61
+ /**
62
+ * 生成唯一的监听器ID
63
+ * @returns 监听器ID
64
+ */
65
+ private generateListenerId;
66
+ /**
67
+ * 验证事件名称是否有效
68
+ * @param event 事件名称
69
+ * @returns 是否有效
70
+ */
71
+ private isValidEvent;
72
+ /**
73
+ * 验证回调函数是否有效
74
+ * @param callback 回调函数
75
+ * @returns 是否有效
76
+ */
77
+ private isValidCallback;
78
+ }
79
+ export declare const eventCenter: EventCenter;
80
+ export declare const on: <T = any>(event: string, callback: EventCallback<T>) => () => void;
81
+ export declare const once: <T = any>(event: string, callback: EventCallback<T>) => () => void;
82
+ export declare const off: (event: string, callbackOrId?: EventCallback | string) => void;
83
+ export declare const emit: <T = any>(event: string, data?: T) => void;
84
+ export declare const clear: () => void;
85
+ export declare const getListenerCount: (event?: string) => number;
86
+ export declare const getEventNames: () => string[];
87
+ export declare const hasListeners: (event: string) => boolean;
88
+ export default eventCenter;
@@ -0,0 +1,161 @@
1
+ var c = Object.defineProperty;
2
+ var f = (o, e, t) => e in o ? c(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
+ var h = (o, e, t) => f(o, typeof e != "symbol" ? e + "" : e, t);
4
+ class d {
5
+ constructor() {
6
+ // 存储所有事件监听器
7
+ h(this, "listeners", /* @__PURE__ */ new Map());
8
+ // 用于生成唯一的监听器ID
9
+ h(this, "listenerIdCounter", 0);
10
+ }
11
+ /**
12
+ * 订阅事件
13
+ * @param event 事件名称
14
+ * @param callback 回调函数
15
+ * @returns 返回取消订阅的函数
16
+ */
17
+ on(e, t) {
18
+ if (!this.isValidEvent(e) || !this.isValidCallback(t))
19
+ throw new Error("Invalid event name or callback function");
20
+ const s = this.generateListenerId(), r = {
21
+ callback: t,
22
+ once: !1,
23
+ id: s
24
+ };
25
+ return this.listeners.has(e) || this.listeners.set(e, []), this.listeners.get(e).push(r), () => this.off(e, s);
26
+ }
27
+ /**
28
+ * 订阅事件(只触发一次)
29
+ * @param event 事件名称
30
+ * @param callback 回调函数
31
+ * @returns 返回取消订阅的函数
32
+ */
33
+ once(e, t) {
34
+ if (!this.isValidEvent(e) || !this.isValidCallback(t))
35
+ throw new Error("Invalid event name or callback function");
36
+ const s = this.generateListenerId(), r = {
37
+ callback: t,
38
+ once: !0,
39
+ id: s
40
+ };
41
+ return this.listeners.has(e) || this.listeners.set(e, []), this.listeners.get(e).push(r), () => this.off(e, s);
42
+ }
43
+ /**
44
+ * 取消订阅事件
45
+ * @param event 事件名称
46
+ * @param callbackOrId 回调函数或监听器ID
47
+ */
48
+ off(e, t) {
49
+ if (!this.isValidEvent(e))
50
+ return;
51
+ const s = this.listeners.get(e);
52
+ if (!s)
53
+ return;
54
+ if (t === void 0) {
55
+ this.listeners.delete(e);
56
+ return;
57
+ }
58
+ const r = typeof t == "string", l = s.filter((n) => r ? n.id !== t : n.callback !== t);
59
+ l.length === 0 ? this.listeners.delete(e) : this.listeners.set(e, l);
60
+ }
61
+ /**
62
+ * 触发事件
63
+ * @param event 事件名称
64
+ * @param data 传递给回调函数的数据
65
+ */
66
+ emit(e, t) {
67
+ if (!this.isValidEvent(e))
68
+ return;
69
+ const s = this.listeners.get(e);
70
+ if (!s || s.length === 0)
71
+ return;
72
+ const r = [...s], l = [];
73
+ r.forEach((n) => {
74
+ try {
75
+ n.callback(t), n.once && l.push(n.id);
76
+ } catch (a) {
77
+ console.error(`Error executing event listener for "${e}":`, a);
78
+ }
79
+ }), l.length > 0 && l.forEach((n) => this.off(e, n));
80
+ }
81
+ /**
82
+ * 获取指定事件的监听器数量
83
+ * @param event 事件名称
84
+ * @returns 监听器数量
85
+ */
86
+ getListenerCount(e) {
87
+ if (e) {
88
+ const s = this.listeners.get(e);
89
+ return s ? s.length : 0;
90
+ }
91
+ let t = 0;
92
+ for (const s of this.listeners.values())
93
+ t += s.length;
94
+ return t;
95
+ }
96
+ /**
97
+ * 获取所有已注册的事件名称
98
+ * @returns 事件名称数组
99
+ */
100
+ getEventNames() {
101
+ return Array.from(this.listeners.keys());
102
+ }
103
+ /**
104
+ * 检查是否有指定事件的监听器
105
+ * @param event 事件名称
106
+ * @returns 是否有监听器
107
+ */
108
+ hasListeners(e) {
109
+ return this.getListenerCount(e) > 0;
110
+ }
111
+ /**
112
+ * 清除所有事件监听器
113
+ */
114
+ clear() {
115
+ this.listeners.clear();
116
+ }
117
+ /**
118
+ * 清除指定事件的所有监听器
119
+ * @param event 事件名称
120
+ */
121
+ clearEvent(e) {
122
+ this.isValidEvent(e) && this.listeners.delete(e);
123
+ }
124
+ /**
125
+ * 生成唯一的监听器ID
126
+ * @returns 监听器ID
127
+ */
128
+ generateListenerId() {
129
+ return `listener_${++this.listenerIdCounter}_${Date.now()}`;
130
+ }
131
+ /**
132
+ * 验证事件名称是否有效
133
+ * @param event 事件名称
134
+ * @returns 是否有效
135
+ */
136
+ isValidEvent(e) {
137
+ return typeof e == "string" && e.trim().length > 0;
138
+ }
139
+ /**
140
+ * 验证回调函数是否有效
141
+ * @param callback 回调函数
142
+ * @returns 是否有效
143
+ */
144
+ isValidCallback(e) {
145
+ return typeof e == "function";
146
+ }
147
+ }
148
+ const i = new d(), g = i.on.bind(i), E = i.once.bind(i), C = i.off.bind(i), L = i.emit.bind(i), b = i.clear.bind(i), m = i.getListenerCount.bind(i), V = i.getEventNames.bind(i), p = i.hasListeners.bind(i);
149
+ export {
150
+ d as EventCenter,
151
+ b as clear,
152
+ i as default,
153
+ L as emit,
154
+ i as eventCenter,
155
+ V as getEventNames,
156
+ m as getListenerCount,
157
+ p as hasListeners,
158
+ C as off,
159
+ g as on,
160
+ E as once
161
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tuikit-atomicx-vue3",
3
- "version": "3.4.2",
3
+ "version": "4.3.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -52,8 +52,8 @@
52
52
  "@tencentcloud/chat": "^3.5.8",
53
53
  "@tencentcloud/chat-uikit-engine": "~2.5.6",
54
54
  "@tencentcloud/tui-core": "latest",
55
- "@tencentcloud/tuiroom-engine-js": "~3.4.2",
56
- "@tencentcloud/uikit-base-component-vue3": "1.1.0",
55
+ "@tencentcloud/tuiroom-engine-js": "~3.4.3",
56
+ "@tencentcloud/uikit-base-component-vue3": "1.1.1",
57
57
  "vue": "^3.4.21"
58
58
  },
59
59
  "dependencies": {
@@ -8,7 +8,6 @@
8
8
  :has-more="
9
9
  audioSettingProps?.displayMode === MediaSettingDisplayMode.IconWithPanel
10
10
  "
11
- :disabled="microphoneStatus === DeviceStatus.OffNeedPermission"
12
11
  :is-not-support="microphoneLastError !== DeviceError.NoError"
13
12
  @click-icon="handleClickIcon"
14
13
  @click-more="handleMore"
@@ -16,7 +15,6 @@
16
15
  <audio-icon
17
16
  :audio-volume="captureVolume"
18
17
  :is-muted="isMuted"
19
- :is-disabled="microphoneStatus === DeviceStatus.OffNeedPermission"
20
18
  />
21
19
  </icon-button>
22
20
  <audio-setting-tab
@@ -34,7 +32,7 @@ import AudioIcon from '../../baseComp/AudioIcon.vue';
34
32
  import AudioSettingTab from './AudioSettingTab.vue';
35
33
  import { useI18n } from '../../locales';
36
34
  import vClickOutside from '../../directives/vClickOutside';
37
- import useDeviceState from '../../states/DeviceState';
35
+ import { useDeviceState } from '../../states/DeviceState';
38
36
  import { DeviceStatus, DeviceError, AudioSettingProps, MediaSettingDisplayMode } from '../../types';
39
37
  import { useRoomState } from '../../states/RoomState';
40
38
 
@@ -45,7 +45,7 @@ import MicrophoneSelect from './MicrophoneSelect.vue';
45
45
  import SpeakerSelect from './SpeakerSelect.vue';
46
46
  import { useI18n } from '../../locales';
47
47
  import { TUIButton } from '@tencentcloud/uikit-base-component-vue3';
48
- import useDeviceState from '../../states/DeviceState';
48
+ import { useDeviceState } from '../../states/DeviceState';
49
49
  import { AudioSettingProps, MediaSettingDisplayMode } from '../../types';
50
50
 
51
51
  const { t } = useI18n();
@@ -169,4 +169,3 @@ onBeforeUnmount(() => {
169
169
  }
170
170
  }
171
171
  </style>
172
- ../../states/DeviceState
@@ -21,7 +21,7 @@
21
21
  import { ref, watch, defineProps, withDefaults, onBeforeMount } from 'vue';
22
22
  import TuiSelect from '../../baseComp/Select';
23
23
  import TuiOption from '../../baseComp/Option';
24
- import useDeviceState from '../../states/DeviceState';
24
+ import { useDeviceState } from '../../states/DeviceState';
25
25
  import { TUIDeviceInfo } from '@tencentcloud/tuiroom-engine-js';
26
26
  const { microphoneList, currentMicrophone, setCurrentMicrophone, getMicrophoneList } = useDeviceState();
27
27
 
@@ -71,4 +71,3 @@ onBeforeMount(async () => {
71
71
  font-size: 14px;
72
72
  }
73
73
  </style>
74
- ../../states/DeviceState
@@ -22,7 +22,7 @@ import { ref, watch, defineProps, withDefaults, onBeforeMount } from 'vue';
22
22
  import { TUIDeviceInfo } from '@tencentcloud/tuiroom-engine-js';
23
23
  import TuiSelect from '../../baseComp/Select';
24
24
  import TuiOption from '../../baseComp/Option';
25
- import useDeviceState from '../../states/DeviceState';
25
+ import { useDeviceState } from '../../states/DeviceState';
26
26
 
27
27
  interface Props {
28
28
  onChange?: (id: string) => void;
@@ -72,4 +72,3 @@ onBeforeMount(async () => {
72
72
  font-size: 14px;
73
73
  }
74
74
  </style>
75
- ../../states/DeviceState
@@ -4,4 +4,5 @@ export const resource = {
4
4
  'Input volume': 'Input volume',
5
5
  Speaker: 'Speaker',
6
6
  'Output volume': '输出音量',
7
+ 'Unrecognized device': 'Unrecognized device',
7
8
  };
@@ -4,4 +4,5 @@ export const resource = {
4
4
  'Input volume': '输入音量',
5
5
  Speaker: '扬声器',
6
6
  'Output volume': '输出音量',
7
+ 'Unrecognized device': '未识别设备',
7
8
  };
@@ -4,11 +4,12 @@
4
4
  <div class="section-title">
5
5
  {{ t('Microphone') }}
6
6
  </div>
7
- <div class="row">
7
+ <div class="row" v-if="microphoneList.length > 0">
8
8
  <span class="label">{{ t('Select device') }}</span>
9
9
  <TUISelect
10
10
  v-model="currentMicrophoneId"
11
11
  class="select"
12
+ :placeholder="t('Unrecognized device')"
12
13
  >
13
14
  <TUIOption
14
15
  v-for="item in microphoneList"
@@ -35,11 +36,12 @@
35
36
  <div class="section-title">
36
37
  {{ t('Speaker') }}
37
38
  </div>
38
- <div class="row">
39
+ <div class="row" v-if="speakerList.length > 0">
39
40
  <span class="label">{{ t('Select device') }}</span>
40
41
  <TUISelect
41
42
  v-model="currentSpeakerId"
42
43
  class="select"
44
+ :placeholder="t('Unrecognized device')"
43
45
  >
44
46
  <TUIOption
45
47
  v-for="item in speakerList"
@@ -38,7 +38,7 @@ import { ref, withDefaults, defineProps, defineEmits, computed, nextTick } from
38
38
  import { useUIKit, TUIButton, TUIToast } from '@tencentcloud/uikit-base-component-vue3';
39
39
  import { useLiveAudienceState } from '../../states/LiveAudienceState';
40
40
  import { useLoginState } from '../../states/LoginState';
41
- import { useMessageInputState } from '../../states/MessageInputState';
41
+ import { useMessageInputState } from './MessageInputState';
42
42
  import BarrageInput from './BarrageInput.vue';
43
43
  import EmojiPicker from './EmojiPicker/EmojiPicker.vue';
44
44
  import { ERROR_MESSAGE } from './constants';
@@ -34,7 +34,7 @@ import { useUIKit, IconEmoji } from '@tencentcloud/uikit-base-component-vue3';
34
34
  import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from 'reka-ui';
35
35
  import { emojiUrlMap, emojiBaseUrl } from '../../../constants/emoji';
36
36
  import { transformTextWithEmojiKeyToName } from '../../../utils/emoji';
37
- import { useMessageInputState, MessageContentType } from '../../../states/MessageInputState';
37
+ import { useMessageInputState, MessageContentType } from '../MessageInputState';
38
38
  import styles from './EmojiPicker.module.scss';
39
39
 
40
40
  const props = defineProps<{
@@ -0,0 +1,160 @@
1
+ import { ref } from 'vue';
2
+ import type { Ref } from 'vue';
3
+ import { useBarrageState } from '../../states/BarrageState';
4
+ import { transformTextWithEmojiNameToKey } from '../../utils';
5
+ import { MessageContentType } from './type';
6
+ import { convertInputContentToEditorNode } from './utils';
7
+ import type { InputContent } from './type';
8
+ import type { Editor } from '@tiptap/vue-3';
9
+
10
+ /**
11
+ * Message Input Store
12
+ *
13
+ * This store manages the state and operations related to the chat message input, including:
14
+ * - Raw input value (text or structured content)
15
+ * - Editor instance management
16
+ * - Content manipulation (insertion, updating, etc.)
17
+ * - Message sending functionality
18
+ */
19
+ interface MessageInputState {
20
+ inputRawValue: Ref<string | InputContent[]>;
21
+ }
22
+
23
+ interface MessageInputAction {
24
+ updateRawValue: (value: string | InputContent[]) => void;
25
+ setEditorInstance: (editor: Editor | null) => void;
26
+ setContent: (value: string | InputContent[]) => void;
27
+ insertContent: (value: string | InputContent[], focus?: boolean) => void;
28
+ focusEditor: () => void;
29
+ blurEditor: () => void;
30
+ sendMessage: (msg?: string | InputContent[]) => void;
31
+ }
32
+
33
+ const { sendTextMessage } = useBarrageState();
34
+
35
+ const editor = ref<Editor | null>(null);
36
+ const inputRawValue = ref<string | InputContent[]>('');
37
+
38
+ /* =====================================================
39
+ * MessageInputActions begin
40
+ * ===================================================== */
41
+ const updateRawValue = (value: string | InputContent[]) => {
42
+ if (typeof value !== 'string' && !Array.isArray(value)) {
43
+ console.warn('Invalid input type for updateRawValue');
44
+ return;
45
+ }
46
+ if (typeof value === 'string') {
47
+ inputRawValue.value = value.trim();
48
+ } else {
49
+ inputRawValue.value = value?.length > 0 ? value : '';
50
+ }
51
+ };
52
+
53
+ const setEditorInstance = (instance: Editor | null) => {
54
+ if (editor.value) {
55
+ editor.value.destroy();
56
+ }
57
+ editor.value = instance;
58
+ };
59
+
60
+ const setContent = (content: string | InputContent[]) => {
61
+ if (!editor.value) {
62
+ return;
63
+ }
64
+ if (typeof content === 'string') {
65
+ editor.value.commands.setContent(content, true);
66
+ } else {
67
+ const editorContent = content.map(convertInputContentToEditorNode);
68
+ editor.value.commands.setContent(editorContent, true);
69
+ }
70
+ editor.value.commands.focus();
71
+ };
72
+
73
+ const insertContent = (content: string | InputContent[], focus = true) => {
74
+ if (!editor.value) {
75
+ return;
76
+ }
77
+ if (typeof content === 'string') {
78
+ editor.value.commands.insertContent(content);
79
+ } else {
80
+ const editorContent = content.map(convertInputContentToEditorNode);
81
+ editor.value.commands.insertContent(editorContent);
82
+ }
83
+ if (focus) {
84
+ editor.value.commands.focus();
85
+ }
86
+ };
87
+
88
+ const focusEditor = () => {
89
+ editor.value?.commands.focus();
90
+ };
91
+
92
+ const blurEditor = () => {
93
+ editor.value?.commands.blur();
94
+ };
95
+
96
+ const sendMessage = async (msg?: string | InputContent[]) => {
97
+ const messageToSend = msg ?? inputRawValue.value;
98
+ if (!messageToSend) {
99
+ return;
100
+ }
101
+
102
+ if (typeof messageToSend === 'string') {
103
+ sendTextMessage({
104
+ text: transformTextWithEmojiNameToKey(messageToSend),
105
+ });
106
+ return;
107
+ }
108
+
109
+ let mergedText = '';
110
+ const sendAccumulatedText = async () => {
111
+ if (mergedText) {
112
+ await sendTextMessage({
113
+ text: transformTextWithEmojiNameToKey(mergedText),
114
+ });
115
+ mergedText = '';
116
+ }
117
+ };
118
+
119
+ const messageProcessors = {
120
+ [MessageContentType.TEXT]: (content: string) => content,
121
+ [MessageContentType.EMOJI]: (content: { url: string; key: string; text: string }) => content.key,
122
+ };
123
+
124
+ // eslint-disable-next-line no-restricted-syntax
125
+ for (const item of messageToSend) {
126
+ if (!item.type || !messageProcessors[item.type]) {
127
+ throw new Error(`Invalid message type: ${item.type}`);
128
+ }
129
+
130
+ const processor = messageProcessors[item.type] as (content: never) => string;
131
+ // eslint-disable-next-line no-await-in-loop
132
+ const result = await processor(item.content as never);
133
+
134
+ if ([MessageContentType.TEXT, MessageContentType.EMOJI].includes(item.type)) {
135
+ mergedText += result;
136
+ }
137
+ }
138
+
139
+ await sendAccumulatedText();
140
+ };
141
+
142
+ /* =====================================================
143
+ * MessageInputActions end
144
+ * ===================================================== */
145
+
146
+ function useMessageInputState(): MessageInputState & MessageInputAction {
147
+ return {
148
+ inputRawValue,
149
+ updateRawValue,
150
+ setEditorInstance,
151
+ setContent,
152
+ insertContent,
153
+ focusEditor,
154
+ blurEditor,
155
+ sendMessage,
156
+ };
157
+ }
158
+
159
+ export { useMessageInputState, MessageContentType };
160
+ export type { InputContent };
@@ -24,7 +24,7 @@
24
24
  import { ref, onMounted, onUnmounted, computed, watch, withDefaults, defineProps, nextTick, defineEmits } from 'vue';
25
25
  import { TUIToast, useUIKit } from '@tencentcloud/uikit-base-component-vue3';
26
26
  import { useConversationListState } from '../../../states/ConversationListState';
27
- import { useMessageInputState } from '../../../states/MessageInputState';
27
+ import { useMessageInputState } from '../MessageInputState';
28
28
  import { ERROR_MESSAGE } from '../constants';
29
29
  import { createEditor } from './EditorCore';
30
30
  import styles from './TextEditor.module.scss';
@@ -0,0 +1,26 @@
1
+ enum MessageContentType {
2
+ TEXT = 'text',
3
+ EMOJI = 'emoji',
4
+ }
5
+
6
+ type ContentTypeMap = {
7
+ [key in MessageContentType]: key extends MessageContentType.TEXT
8
+ ? string
9
+ : key extends MessageContentType.EMOJI
10
+ ? { url: string; key: string; text: string }
11
+ : never;
12
+ };
13
+
14
+ interface InputContent<T extends MessageContentType = MessageContentType> {
15
+ type: T;
16
+ content: ContentTypeMap[T];
17
+ }
18
+
19
+ export {
20
+ MessageContentType,
21
+ };
22
+
23
+ export type {
24
+ ContentTypeMap,
25
+ InputContent,
26
+ };