@tencent-rtc/mcp 1.4.7 → 1.6.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 (553) hide show
  1. package/cursor-setting.png +0 -0
  2. package/index.js +0 -1
  3. package/knowledge/bm25-cache.js +73 -0
  4. package/knowledge/bm25.js +147 -0
  5. package/knowledge/build-index.js +69 -0
  6. package/knowledge/chunker.js +167 -0
  7. package/knowledge/content-loader.js +39 -0
  8. package/knowledge/doc-url-resolver.js +142 -0
  9. package/knowledge/extractors.js +25 -0
  10. package/knowledge/path-meta.js +184 -0
  11. package/knowledge/search/exact-lookup.js +497 -0
  12. package/knowledge/search/filter-pool.js +104 -0
  13. package/knowledge/search/product-scope-intent.js +40 -0
  14. package/knowledge/search/requires-framework.js +81 -0
  15. package/knowledge/search/search-knowledge.js +229 -0
  16. package/mcp-server-prompt.png +0 -0
  17. package/package.json +1 -1
  18. package/resource/_schema/feature-aliases.yaml +10 -0
  19. package/resource/_schema/goal-tags.yaml +72 -0
  20. package/resource/_schema/products.yaml +19 -0
  21. package/resource/_schema/trtc-intents.yaml +27 -0
  22. package/resource/_schema/types.yaml +43 -0
  23. package/resource/index/component-slugs.json +1 -0
  24. package/resource/index/doc-source-urls.json +1 -0
  25. package/resource/index/manifest.json +1 -0
  26. package/resource/{doc → integration}/callkit/preset/android/integration.md +34 -28
  27. package/resource/integration/callkit/preset/flutter/integration.md +346 -0
  28. package/resource/integration/callkit/preset/ios/integration.md +408 -0
  29. package/resource/integration/callkit/preset/react/integration.md +362 -0
  30. package/resource/integration/callkit/preset/vue/integration.md +356 -0
  31. package/resource/integration/chat/preset/android/integration.md +500 -0
  32. package/resource/integration/chat/preset/flutter/integration.md +370 -0
  33. package/resource/integration/chat/preset/ios/integration.md +566 -0
  34. package/resource/integration/chat/preset/react/integration.md +490 -0
  35. package/resource/integration/chat/preset/vue/integration.md +504 -0
  36. package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +26 -22
  37. package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +22 -18
  38. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +309 -0
  39. package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +47 -39
  40. package/resource/integration/roomkit/preset/vue/integration.md +562 -0
  41. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +828 -0
  42. package/resource/knowledge/callkit/core-sdk/android/make-call.md +897 -0
  43. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +363 -0
  44. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1111 -0
  45. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1132 -0
  46. package/resource/{doc → knowledge}/callkit/core-sdk/flutter/offline-push.md +174 -151
  47. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1084 -0
  48. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1252 -0
  49. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +534 -0
  50. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +953 -0
  51. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1061 -0
  52. package/resource/knowledge/callkit/faq/android.md +92 -0
  53. package/resource/{doc/callkit/faq/android-faq.md → knowledge/callkit/faq/common.md} +11 -12
  54. package/resource/knowledge/callkit/faq/error-code.md +67 -0
  55. package/resource/knowledge/callkit/faq/flutter.md +52 -0
  56. package/resource/knowledge/callkit/faq/ios.md +104 -0
  57. package/resource/knowledge/callkit/faq/web.md +74 -0
  58. package/resource/knowledge/callkit/preset/android/api.md +412 -0
  59. package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
  60. package/resource/knowledge/callkit/preset/ios/api.md +234 -0
  61. package/resource/knowledge/callkit/preset/web/api.md +83 -0
  62. package/resource/knowledge/chat/preset/android/features/chat-setting.md +74 -0
  63. package/resource/knowledge/chat/preset/android/features/contact-list.md +43 -0
  64. package/resource/knowledge/chat/preset/android/features/conversation-list.md +117 -0
  65. package/resource/knowledge/chat/preset/android/features/language.md +136 -0
  66. package/resource/knowledge/chat/preset/android/features/message-input.md +57 -0
  67. package/resource/knowledge/chat/preset/android/features/message-list.md +142 -0
  68. package/resource/knowledge/chat/preset/android/features/search.md +64 -0
  69. package/resource/knowledge/chat/preset/android/features/theme.md +222 -0
  70. package/resource/knowledge/chat/preset/android-view/integration.md +300 -0
  71. package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +64 -0
  72. package/resource/knowledge/chat/preset/flutter/features/contact-list.md +40 -0
  73. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +129 -0
  74. package/resource/knowledge/chat/preset/flutter/features/language.md +104 -0
  75. package/resource/knowledge/chat/preset/flutter/features/message-input.md +54 -0
  76. package/resource/knowledge/chat/preset/flutter/features/message-list.md +158 -0
  77. package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
  78. package/resource/knowledge/chat/preset/flutter/features/theme.md +261 -0
  79. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +94 -0
  80. package/resource/knowledge/chat/preset/ios/features/contact-list.md +119 -0
  81. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +134 -0
  82. package/resource/knowledge/chat/preset/ios/features/language.md +125 -0
  83. package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
  84. package/resource/knowledge/chat/preset/ios/features/message-list.md +162 -0
  85. package/resource/knowledge/chat/preset/ios/features/search.md +93 -0
  86. package/resource/knowledge/chat/preset/ios/features/theme.md +270 -0
  87. package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +160 -158
  88. package/resource/knowledge/chat/preset/react/features/chat-setting.md +101 -0
  89. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +43 -41
  90. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +215 -0
  91. package/resource/knowledge/chat/preset/react/features/conversation-list.md +339 -0
  92. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +101 -0
  93. package/resource/knowledge/chat/preset/react/features/conversation-search.md +61 -0
  94. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +117 -156
  95. package/resource/knowledge/chat/preset/react/features/message-list.md +297 -0
  96. package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/search.md +65 -59
  97. package/resource/knowledge/chat/preset/react/features/theme.md +93 -0
  98. package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
  99. package/resource/knowledge/chat/preset/vue/features/chat-setting.md +79 -0
  100. package/resource/knowledge/chat/preset/vue/features/contact-list.md +277 -0
  101. package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +234 -0
  102. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +331 -0
  103. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +216 -0
  104. package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +13 -13
  105. package/resource/knowledge/chat/preset/vue/features/message-input.md +551 -0
  106. package/resource/knowledge/chat/preset/vue/features/message-list.md +350 -0
  107. package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +79 -73
  108. package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
  109. package/resource/knowledge/chat/urls/error-code.md +17 -0
  110. package/resource/knowledge/chat/urls/product.md +43 -0
  111. package/resource/knowledge/chat/urls/restapi.md +204 -0
  112. package/resource/knowledge/chat/urls/sdk/android.md +80 -0
  113. package/resource/knowledge/chat/urls/sdk/flutter.md +71 -0
  114. package/resource/knowledge/chat/urls/sdk/ios.md +80 -0
  115. package/resource/knowledge/chat/urls/sdk/web.md +80 -0
  116. package/resource/knowledge/chat/urls/webhook.md +68 -0
  117. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +286 -0
  118. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +174 -0
  119. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +329 -0
  120. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +55 -0
  121. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +434 -0
  122. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +362 -0
  123. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +466 -0
  124. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +173 -0
  125. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +51 -0
  126. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +291 -0
  127. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +78 -0
  128. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +488 -0
  129. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +219 -0
  130. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +282 -0
  131. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
  132. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +153 -0
  133. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +312 -0
  134. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +404 -0
  135. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +334 -0
  136. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +426 -0
  137. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
  138. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +52 -0
  139. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
  140. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +150 -0
  141. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +438 -0
  142. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +190 -0
  143. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +291 -0
  144. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +192 -0
  145. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +146 -0
  146. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +309 -0
  147. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +370 -0
  148. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +339 -0
  149. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +503 -0
  150. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +188 -0
  151. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +51 -0
  152. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +289 -0
  153. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +78 -0
  154. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +487 -0
  155. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +183 -0
  156. package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +736 -0
  157. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +53 -47
  158. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +28 -24
  159. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +22 -18
  160. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +17 -15
  161. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +19 -18
  162. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +102 -89
  163. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +41 -37
  164. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +45 -43
  165. package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +23 -20
  166. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +41 -41
  167. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +70 -69
  168. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +68 -71
  169. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +43 -47
  170. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +59 -56
  171. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +103 -105
  172. package/resource/knowledge/livekit/core-sdk/live/flutter/live-host-interaction.md +869 -0
  173. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +84 -87
  174. package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +43 -40
  175. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +11 -10
  176. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +28 -24
  177. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +22 -18
  178. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +15 -14
  179. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +19 -18
  180. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +54 -50
  181. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +41 -37
  182. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +40 -40
  183. package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +19 -18
  184. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +53 -47
  185. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +28 -24
  186. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +22 -18
  187. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +41 -33
  188. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +94 -81
  189. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +35 -30
  190. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +45 -42
  191. package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-room-list.md +23 -20
  192. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +260 -0
  193. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +598 -0
  194. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-barrage.md +490 -0
  195. package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +65 -59
  196. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +424 -0
  197. package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +69 -76
  198. package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-room-list.md +726 -0
  199. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +11 -10
  200. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +28 -24
  201. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +22 -18
  202. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +41 -33
  203. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +54 -50
  204. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +35 -30
  205. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +49 -46
  206. package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-room-list.md +19 -18
  207. package/resource/knowledge/livekit/faq/error-code.md +193 -0
  208. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/barrage.md +56 -53
  209. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-audience-list.md +22 -21
  210. package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-view.md +34 -32
  211. package/resource/knowledge/push/config/android.md +92 -0
  212. package/resource/knowledge/push/config/harmonyos.md +83 -0
  213. package/resource/knowledge/push/config/ios.md +254 -0
  214. package/resource/knowledge/push/config/react-native.md +254 -0
  215. package/resource/knowledge/push/config/unity.md +209 -0
  216. package/resource/knowledge/push/config/unreal-engine.md +194 -0
  217. package/resource/knowledge/push/integration/android.md +404 -0
  218. package/resource/knowledge/push/integration/flutter.md +465 -0
  219. package/resource/knowledge/push/integration/harmonyos.md +63 -0
  220. package/resource/knowledge/push/integration/ios.md +246 -0
  221. package/resource/knowledge/push/integration/react-native.md +366 -0
  222. package/resource/knowledge/push/integration/uni-app.md +208 -0
  223. package/resource/knowledge/push/integration/unity.md +389 -0
  224. package/resource/knowledge/push/integration/unreal-engine.md +390 -0
  225. package/resource/knowledge/push/overview/prepare.md +60 -0
  226. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +241 -0
  227. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +588 -0
  228. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +364 -0
  229. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +340 -0
  230. package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
  231. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +797 -0
  232. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +325 -0
  233. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +325 -0
  234. package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +233 -0
  235. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +569 -0
  236. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +325 -0
  237. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +322 -0
  238. package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +221 -0
  239. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +49 -48
  240. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +461 -0
  241. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +216 -0
  242. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +370 -0
  243. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-participant-state.md +61 -60
  244. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +280 -0
  245. package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-view.md +57 -56
  246. package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +319 -0
  247. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +267 -0
  248. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +261 -0
  249. package/resource/knowledge/roomkit/preset/android/integration.md +396 -0
  250. package/resource/knowledge/roomkit/preset/flutter/integration.md +404 -0
  251. package/resource/knowledge/roomkit/preset/ios/integration.md +369 -0
  252. package/resource/knowledge/roomkit/preset/react/integration.md +576 -0
  253. package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +44 -0
  254. package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +8 -2
  255. package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +19 -1
  256. package/resource/{doc → knowledge}/rtcengine/web/plugin/23-advanced-support-detection.md +1 -1
  257. package/resource/{doc → knowledge}/rtcengine/web/plugin/24-advanced-network-quality.md +8 -8
  258. package/resource/{doc → knowledge}/rtcengine/web/plugin/25-advanced-device-change.md +1 -1
  259. package/resource/{doc → knowledge}/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +6 -6
  260. package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +3 -3
  261. package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +18 -0
  262. package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
  263. package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +2 -2
  264. package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
  265. package/resource/knowledge/trtc/android/TRTCCloud.md +1915 -0
  266. package/resource/knowledge/trtc/android/TRTCCloudDef.md +1029 -0
  267. package/resource/knowledge/trtc/android/TRTCCloudListener.md +1095 -0
  268. package/resource/knowledge/trtc/android/TRTCStatistics.md +68 -0
  269. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +502 -0
  270. package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
  271. package/resource/knowledge/trtc/android/TXDeviceManager.md +169 -0
  272. package/resource/knowledge/trtc/android/TXLiteAVCode.md +125 -0
  273. package/resource/knowledge/trtc/c++/ITRTCCloud.md +2069 -0
  274. package/resource/knowledge/trtc/c++/ITRTCStatistics.md +73 -0
  275. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
  276. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +391 -0
  277. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1191 -0
  278. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +931 -0
  279. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +127 -0
  280. package/resource/knowledge/trtc/ios/TRTCCloud.md +2118 -0
  281. package/resource/knowledge/trtc/ios/TRTCCloudDef.md +975 -0
  282. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1131 -0
  283. package/resource/knowledge/trtc/ios/TRTCStatistics.md +68 -0
  284. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +423 -0
  285. package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
  286. package/resource/knowledge/trtc/ios/TXDeviceManager.md +387 -0
  287. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +127 -0
  288. package/server-config.js +0 -1
  289. package/server.js +35 -12
  290. package/streamable-http.js +0 -1
  291. package/tools/call/get_native_call_uikit_integration.js +2 -4
  292. package/tools/call/get_native_callkit_core_integration.js +2 -6
  293. package/tools/call/get_web_call_uikit_integration.js +2 -4
  294. package/tools/chat/get_native_chat_uikit_integration.js +2 -4
  295. package/tools/chat/get_web_chat_uikit_integration.js +2 -4
  296. package/tools/common/get_usersig.js +0 -1
  297. package/tools/common/present_framework_choice.js +19 -14
  298. package/tools/common/record_answer.js +19 -26
  299. package/tools/common/record_feedback.js +17 -31
  300. package/tools/common/search_trtc_knowledge.js +44 -0
  301. package/tools/definitions/get_native_call_uikit_integration_def.js +3 -2
  302. package/tools/definitions/get_native_callkit_core_integration_def.js +5 -4
  303. package/tools/definitions/get_native_chat_uikit_integration_def.js +5 -3
  304. package/tools/definitions/get_native_livekit_core_integration_def.js +6 -6
  305. package/tools/definitions/get_usersig_def.js +0 -1
  306. package/tools/definitions/get_web_call_uikit_integration_def.js +4 -3
  307. package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -1
  308. package/tools/definitions/get_web_live_uikit_integration_def.js +5 -6
  309. package/tools/definitions/get_web_room_core_integration_def.js +49 -0
  310. package/tools/definitions/get_web_room_uikit_integration_def.js +5 -5
  311. package/tools/definitions/integration-boundary.js +5 -0
  312. package/tools/definitions/present_framework_choice_def.js +12 -11
  313. package/tools/definitions/record_answer_def.js +19 -18
  314. package/tools/definitions/record_feedback_def.js +14 -14
  315. package/tools/definitions/search_trtc_knowledge_def.js +39 -0
  316. package/tools/index.js +5 -37
  317. package/tools/live/get_native_livekit_core_integration.js +1 -4
  318. package/tools/live/get_web_live_uikit_integration.js +2 -5
  319. package/tools/room/get_web_room_core_integration.js +47 -0
  320. package/tools/room/get_web_room_uikit_integration.js +2 -4
  321. package/utils/generate-structured-result.js +24 -31
  322. package/utils/generate-usersig.js +0 -1
  323. package/utils/get-device-identifier.js +0 -1
  324. package/utils/get-doc-content.js +14 -9
  325. package/utils/http-get.js +0 -1
  326. package/utils/http-post.js +0 -1
  327. package/utils/report-cls-client.js +18 -21
  328. package/utils/report-es-client.js +1 -2
  329. package/index.js.map +0 -1
  330. package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
  331. package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -852
  332. package/resource/doc/callkit/core-sdk/android/make-call.md +0 -954
  333. package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -361
  334. package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1160
  335. package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1205
  336. package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1090
  337. package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1248
  338. package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -485
  339. package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -950
  340. package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1052
  341. package/resource/doc/callkit/faq/common/error-code.md +0 -47
  342. package/resource/doc/callkit/faq/flutter-faq.md +0 -115
  343. package/resource/doc/callkit/faq/ios-faq.md +0 -115
  344. package/resource/doc/callkit/faq/web-faq.md +0 -36
  345. package/resource/doc/callkit/preset/android/api.md +0 -296
  346. package/resource/doc/callkit/preset/flutter/api.md +0 -410
  347. package/resource/doc/callkit/preset/flutter/integration.md +0 -164
  348. package/resource/doc/callkit/preset/ios/api.md +0 -80
  349. package/resource/doc/callkit/preset/ios/integration.md +0 -187
  350. package/resource/doc/callkit/preset/react/api.md +0 -501
  351. package/resource/doc/callkit/preset/react/integration.md +0 -86
  352. package/resource/doc/callkit/preset/vue/api.md +0 -501
  353. package/resource/doc/callkit/preset/vue/integration.md +0 -83
  354. package/resource/doc/chatkit/android/faq.md +0 -111
  355. package/resource/doc/chatkit/android/features/theme.md +0 -219
  356. package/resource/doc/chatkit/android/integration.md +0 -490
  357. package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -281
  358. package/resource/doc/chatkit/faq/common/product.md +0 -7
  359. package/resource/doc/chatkit/faq/common/server.md +0 -44
  360. package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
  361. package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -199
  362. package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -53
  363. package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -235
  364. package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
  365. package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -287
  366. package/resource/doc/chatkit/flutter/faq.md +0 -23
  367. package/resource/doc/chatkit/flutter/features/theme.md +0 -235
  368. package/resource/doc/chatkit/flutter/integration.md +0 -344
  369. package/resource/doc/chatkit/ios/faq.md +0 -111
  370. package/resource/doc/chatkit/ios/features/theme.md +0 -267
  371. package/resource/doc/chatkit/react/components/avatar.md +0 -104
  372. package/resource/doc/chatkit/react/components/chat-header.md +0 -148
  373. package/resource/doc/chatkit/react/components/chat-setting.md +0 -57
  374. package/resource/doc/chatkit/react/components/chat.md +0 -38
  375. package/resource/doc/chatkit/react/components/component-list.md +0 -37
  376. package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
  377. package/resource/doc/chatkit/react/components/conversation-list.md +0 -333
  378. package/resource/doc/chatkit/react/components/conversation-preview.md +0 -118
  379. package/resource/doc/chatkit/react/components/conversation-search.md +0 -60
  380. package/resource/doc/chatkit/react/components/message-list.md +0 -293
  381. package/resource/doc/chatkit/react/components/tuikit.md +0 -34
  382. package/resource/doc/chatkit/react/faq.md +0 -26
  383. package/resource/doc/chatkit/react/integration.md +0 -416
  384. package/resource/doc/chatkit/vue/components/avatar.md +0 -104
  385. package/resource/doc/chatkit/vue/components/chat-header.md +0 -148
  386. package/resource/doc/chatkit/vue/components/chat-setting.md +0 -62
  387. package/resource/doc/chatkit/vue/components/chat.md +0 -45
  388. package/resource/doc/chatkit/vue/components/component-list.md +0 -87
  389. package/resource/doc/chatkit/vue/components/contact-list.md +0 -271
  390. package/resource/doc/chatkit/vue/components/conversation-actions.md +0 -228
  391. package/resource/doc/chatkit/vue/components/conversation-list.md +0 -320
  392. package/resource/doc/chatkit/vue/components/conversation-preview.md +0 -213
  393. package/resource/doc/chatkit/vue/components/message-input.md +0 -1054
  394. package/resource/doc/chatkit/vue/components/message-list.md +0 -433
  395. package/resource/doc/chatkit/vue/components/tuikit.md +0 -31
  396. package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
  397. package/resource/doc/chatkit/vue/faq.md +0 -36
  398. package/resource/doc/chatkit/vue/integration.md +0 -428
  399. package/resource/doc/livekit/core-sdk/live/flutter/live-host-interaction.md +0 -866
  400. package/resource/doc/livekit/faq/common/error-code.md +0 -88
  401. package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
  402. package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -91
  403. package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -112
  404. package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -215
  405. package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +0 -300
  406. package/resource/doc/roomkit/faq/common/error-code.md +0 -67
  407. package/resource/doc/roomkit/vue/features/call-user-to-room.md +0 -220
  408. package/resource/doc/roomkit/vue/features/device-state.md +0 -460
  409. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +0 -215
  410. package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
  411. package/resource/doc/roomkit/vue/features/room-state.md +0 -282
  412. package/resource/doc/roomkit/vue/features/schedule-room.md +0 -318
  413. package/resource/doc/roomkit/vue/features/screen-share.md +0 -265
  414. package/resource/doc/roomkit/vue/features/virtual-background.md +0 -271
  415. package/resource/doc/roomkit/vue/integration.md +0 -315
  416. package/resource/doc/rtcengine/faq/common/error_code.md +0 -1
  417. package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
  418. package/resource/doc/rtcengine/web/.gitkeep +0 -0
  419. package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +0 -59
  420. package/resource/doc/trtc/C++/ITRTCCloud.md +0 -1970
  421. package/resource/doc/trtc/C++/ITRTCStatistics.md +0 -70
  422. package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -469
  423. package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -387
  424. package/resource/doc/trtc/C++/TRTCCloudCallback.md +0 -1082
  425. package/resource/doc/trtc/C++/TRTCTypeDef.md +0 -925
  426. package/resource/doc/trtc/C++/TXLiteAVCode.md +0 -129
  427. package/resource/doc/trtc/android/TRTCCloud.md +0 -1815
  428. package/resource/doc/trtc/android/TRTCCloudDef.md +0 -992
  429. package/resource/doc/trtc/android/TRTCCloudListener.md +0 -1004
  430. package/resource/doc/trtc/android/TRTCStatistics.md +0 -65
  431. package/resource/doc/trtc/android/TXAudioEffectManager.md +0 -469
  432. package/resource/doc/trtc/android/TXBeautyManager.md +0 -402
  433. package/resource/doc/trtc/android/TXDeviceManager.md +0 -173
  434. package/resource/doc/trtc/android/TXLiteAVCode.md +0 -127
  435. package/resource/doc/trtc/iOS/TRTCCloud.md +0 -2028
  436. package/resource/doc/trtc/iOS/TRTCCloudDef.md +0 -958
  437. package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +0 -1046
  438. package/resource/doc/trtc/iOS/TRTCStatistics.md +0 -65
  439. package/resource/doc/trtc/iOS/TXAudioEffectManager.md +0 -397
  440. package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -403
  441. package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -381
  442. package/resource/doc/trtc/iOS/TXLiteAVCode.md +0 -130
  443. package/server-config.js.map +0 -1
  444. package/server.js.map +0 -1
  445. package/streamable-http.js.map +0 -1
  446. package/tools/call/get_callkit_api.js +0 -33
  447. package/tools/call/get_callkit_api.js.map +0 -1
  448. package/tools/call/get_native_call_uikit_integration.js.map +0 -1
  449. package/tools/call/get_native_callkit_core_integration.js.map +0 -1
  450. package/tools/call/get_web_call_uikit_integration.js.map +0 -1
  451. package/tools/chat/get_native_chat_uikit_feature_detail.js +0 -35
  452. package/tools/chat/get_native_chat_uikit_feature_detail.js.map +0 -1
  453. package/tools/chat/get_native_chat_uikit_integration.js.map +0 -1
  454. package/tools/chat/get_web_chat_uikit_component_detail.js +0 -35
  455. package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
  456. package/tools/chat/get_web_chat_uikit_integration.js.map +0 -1
  457. package/tools/common/get_faq.js +0 -266
  458. package/tools/common/get_faq.js.map +0 -1
  459. package/tools/common/get_usersig.js.map +0 -1
  460. package/tools/common/present_framework_choice.js.map +0 -1
  461. package/tools/common/record_answer.js.map +0 -1
  462. package/tools/common/record_feedback.js.map +0 -1
  463. package/tools/common/record_skill_session.js +0 -69
  464. package/tools/common/record_skill_session.js.map +0 -1
  465. package/tools/definitions/get_callkit_api_def.js +0 -29
  466. package/tools/definitions/get_callkit_api_def.js.map +0 -1
  467. package/tools/definitions/get_faq_def.js +0 -47
  468. package/tools/definitions/get_faq_def.js.map +0 -1
  469. package/tools/definitions/get_native_call_uikit_integration_def.js.map +0 -1
  470. package/tools/definitions/get_native_callkit_core_integration_def.js.map +0 -1
  471. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +0 -31
  472. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +0 -1
  473. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +0 -1
  474. package/tools/definitions/get_native_livekit_core_features_def.js +0 -34
  475. package/tools/definitions/get_native_livekit_core_features_def.js.map +0 -1
  476. package/tools/definitions/get_native_livekit_core_integration_def.js.map +0 -1
  477. package/tools/definitions/get_native_trtc_sdk_docs_def.js +0 -32
  478. package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +0 -1
  479. package/tools/definitions/get_usersig_def.js.map +0 -1
  480. package/tools/definitions/get_web_call_uikit_integration_def.js.map +0 -1
  481. package/tools/definitions/get_web_chat_uikit_component_detail_def.js +0 -31
  482. package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +0 -1
  483. package/tools/definitions/get_web_chat_uikit_integration_def.js.map +0 -1
  484. package/tools/definitions/get_web_live_uikit_integration_def.js.map +0 -1
  485. package/tools/definitions/get_web_livekit_api_def.js +0 -30
  486. package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
  487. package/tools/definitions/get_web_livekit_component_detail_def.js +0 -32
  488. package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
  489. package/tools/definitions/get_web_room_uikit_integration_def.js.map +0 -1
  490. package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -31
  491. package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
  492. package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -27
  493. package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
  494. package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -27
  495. package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
  496. package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -27
  497. package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +0 -1
  498. package/tools/definitions/present_framework_choice_def.js.map +0 -1
  499. package/tools/definitions/record_answer_def.js.map +0 -1
  500. package/tools/definitions/record_feedback_def.js.map +0 -1
  501. package/tools/definitions/record_skill_session_def.js +0 -31
  502. package/tools/definitions/record_skill_session_def.js.map +0 -1
  503. package/tools/index.js.map +0 -1
  504. package/tools/live/get_native_livekit_core_features.js +0 -68
  505. package/tools/live/get_native_livekit_core_features.js.map +0 -1
  506. package/tools/live/get_native_livekit_core_integration.js.map +0 -1
  507. package/tools/live/get_web_live_uikit_integration.js.map +0 -1
  508. package/tools/live/get_web_livekit_api.js +0 -33
  509. package/tools/live/get_web_livekit_api.js.map +0 -1
  510. package/tools/live/get_web_livekit_component_detail.js +0 -35
  511. package/tools/live/get_web_livekit_component_detail.js.map +0 -1
  512. package/tools/room/get_web_room_uikit_integration.js.map +0 -1
  513. package/tools/room/get_web_roomkit_feature_detail.js +0 -69
  514. package/tools/room/get_web_roomkit_feature_detail.js.map +0 -1
  515. package/tools/rtcengine/get_web_trtc_sdk_api.js +0 -32
  516. package/tools/rtcengine/get_web_trtc_sdk_api.js.map +0 -1
  517. package/tools/rtcengine/get_web_trtc_sdk_integration.js +0 -32
  518. package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +0 -1
  519. package/tools/rtcengine/get_web_trtc_sdk_plugin.js +0 -32
  520. package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +0 -1
  521. package/tools/trtc/get_native_trtc_sdk_docs.js +0 -74
  522. package/tools/trtc/get_native_trtc_sdk_docs.js.map +0 -1
  523. package/utils/build-session-directives.js +0 -120
  524. package/utils/build-session-directives.js.map +0 -1
  525. package/utils/generate-structured-result.js.map +0 -1
  526. package/utils/generate-usersig.js.map +0 -1
  527. package/utils/get-device-identifier.js.map +0 -1
  528. package/utils/get-doc-content.js.map +0 -1
  529. package/utils/handle-framework.js +0 -9
  530. package/utils/handle-framework.js.map +0 -1
  531. package/utils/handle-state-name.js +0 -29
  532. package/utils/handle-state-name.js.map +0 -1
  533. package/utils/http-get.js.map +0 -1
  534. package/utils/http-post.js.map +0 -1
  535. package/utils/report-cls-client.js.map +0 -1
  536. package/utils/report-es-client.js.map +0 -1
  537. package/utils/report-runtime-error-cls-client.js +0 -91
  538. package/utils/report-runtime-error-cls-client.js.map +0 -1
  539. /package/resource/{doc/livekit/preset/live/vue/faq.md → knowledge/push/config/donut.md} +0 -0
  540. /package/resource/{doc/roomkit/vue/faq.md → knowledge/push/integration/donut.md} +0 -0
  541. /package/resource/{doc → knowledge}/rtcengine/web/api.md +0 -0
  542. /package/resource/{doc/rtcengine/faq/web/web.md → knowledge/rtcengine/web/faq.md} +0 -0
  543. /package/resource/{doc → knowledge}/rtcengine/web/how_to_integrated_web_sdk.md +0 -0
  544. /package/resource/{doc → knowledge}/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +0 -0
  545. /package/resource/{doc → knowledge}/rtcengine/web/plugin/28-advanced-beauty.md +0 -0
  546. /package/resource/{doc → knowledge}/rtcengine/web/plugin/30-advanced-cross-room-link.md +0 -0
  547. /package/resource/{doc → knowledge}/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -0
  548. /package/resource/{doc → knowledge}/rtcengine/web/plugin/37-advanced-voice-changer.md +0 -0
  549. /package/resource/{doc → knowledge}/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -0
  550. /package/resource/{doc → knowledge}/rtcengine/web/plugin/40-advanced-video-mixer.md +0 -0
  551. /package/resource/{doc → knowledge}/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +0 -0
  552. /package/resource/{doc → knowledge}/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +0 -0
  553. /package/resource/{doc → knowledge}/rtcengine/web/plugin/43-advanced-face-detection.md +0 -0
@@ -0,0 +1,461 @@
1
+ This document guides you on how to use Atomicx components and the `useDeviceState` Hook to manage the state of audio/video devices (camera, microphone, speaker) in a meeting, as well as how to obtain local network quality information.
2
+
3
+ ## Feature Overview
4
+ - **Device enumeration and switching:** Supports retrieving the list of available system devices in real time and switching between them seamlessly.
5
+
6
+ - **Fine-grained state control:** Provides the ability to turn devices on/off, mute capture, adjust volume, and monitor volume in real time.
7
+
8
+ - **Error diagnostics:** Provides real-time feedback on abnormal states such as hardware conflicts and missing system permissions.
9
+
10
+ - **Network quality monitoring:** Provides multi-dimensional network information including latency and packet loss rate.
11
+
12
+ ## Prerequisites
13
+ - The user has completed login authentication via [useLoginState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-LoginState). For details, refer to the Integration Overview.
14
+
15
+ - If integrating within an `iframe`, you need to declare the permissions in the tag.
16
+
17
+ ``` typescript
18
+ <iframe allow="microphone; camera;"></iframe>
19
+ ```
20
+
21
+ ## Implementing Camera Management
22
+
23
+ You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to control turning the local camera on/off, switching devices, and to listen for capture status and errors.
24
+
25
+ ### Step 1: Turn the camera on/off
26
+
27
+ Control turning the camera on/off by calling the [openLocalCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#openLocalCamera) and [closeLocalCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#closeLocalCamera) methods.
28
+ ``` typescript
29
+ import { useDeviceState, DeviceStatus } from 'tuikit-atomicx-vue3/room';
30
+ const { cameraStatus, openLocalCamera, closeLocalCamera } = useDeviceState();
31
+ const toggleCamera = async () => {
32
+ if (cameraStatus.value === DeviceStatus.On) {
33
+ await closeLocalCamera();
34
+ } else {
35
+ await openLocalCamera();
36
+ }
37
+ };
38
+ ```
39
+
40
+ ### Step 2: Get/switch the camera device
41
+
42
+ #### Example of getting and switching the camera on desktop
43
+
44
+ You can use [cameraList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraList) to get all available camera devices, and use the [setCurrentCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentCamera) method to switch the currently used camera.
45
+ ``` typescript
46
+ import { useDeviceState } from 'tuikit-atomicx-vue3/room';
47
+ const { cameraList, currentCamera, getCameraList, setCurrentCamera } = useDeviceState();
48
+
49
+ // Get the camera list
50
+ await getCameraList();
51
+
52
+ // Iterate and display available cameras
53
+ cameraList.value.forEach((camera) => {
54
+ console.log(`Camera: ${camera.deviceName} (${camera.deviceId})`);
55
+ });
56
+
57
+ // Switch to the specified camera
58
+ const switchCamera = async (deviceId: string) => {
59
+ try {
60
+ // Switch the device (if the camera is already on, capture will automatically restart with the new device)
61
+ await setCurrentCamera({ deviceId });
62
+ console.log('Camera switched successfully');
63
+ } catch (error) {
64
+ console.error('Failed to switch camera:', error);
65
+ // The original device will continue to be used if switching fails
66
+ }
67
+ };
68
+
69
+ // Listen for changes to the current camera
70
+ watch(currentCamera, (camera) => {
71
+ if (camera) {
72
+ console.log('Currently used camera:', camera.deviceName);
73
+ }
74
+ });
75
+ ```
76
+
77
+ > **Note:**
78
+ >
79
+
80
+ > When you call [setCurrentCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentCamera) to switch the device, if the camera is already on, Atomicx will automatically stop capturing from the current device and restart capturing with the new device, so the video stream switches seamlessly. If switching fails, the original device will continue to be used.
81
+ >
82
+
83
+ #### Example of switching the camera on mobile
84
+
85
+ On mobile, use [switchCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#switchCamera) to switch between the front and rear cameras.
86
+ ``` typescript
87
+ import { useDeviceState } from 'tuikit-atomicx-vue3/room';
88
+ const { isFrontCamera, switchCamera } = useDeviceState();
89
+
90
+ // Determine whether the device is mobile
91
+ const isMobile = /Android|webOS|iPhone|iPad|iPod/i.test(navigator.userAgent);
92
+
93
+ // Switch between front and rear cameras (mobile only)
94
+ const toggleCamera = async () => {
95
+ if (!isMobile) {
96
+ console.warn('Switching between front and rear cameras is only supported on mobile');
97
+ return;
98
+ }
99
+
100
+ // Switch to the opposite camera
101
+ await switchCamera({ isFrontCamera: !isFrontCamera.value });
102
+ console.log(`Switched to the ${isFrontCamera.value ? 'front' : 'rear'} camera`);
103
+ };
104
+ ```
105
+
106
+ ### Step 3: Handle camera capture errors
107
+
108
+ When an error occurs during camera capture, you can obtain the error information via the [cameraLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraLastError) property.
109
+
110
+ > Note:
111
+ >
112
+
113
+ > Common camera errors include `NoSystemPermission` (no system permission) and `OccupiedError` (device is occupied). You should display a clear error message to the user based on this property.
114
+ >
115
+
116
+ ``` typescript
117
+ import { useDeviceState, DeviceError } from 'tuikit-atomicx-vue3/room';
118
+ const { cameraLastError } = useDeviceState();
119
+
120
+ // Listen for camera errors
121
+ watch(cameraLastError, (error) => {
122
+ switch (error) {
123
+ case DeviceError.NoSystemPermission:
124
+ console.error('Camera permission denied. Please enable camera permission in system settings');
125
+ break;
126
+ case DeviceError.NoDeviceDetected:
127
+ console.error('No camera device detected');
128
+ break;
129
+ case DeviceError.OccupiedError:
130
+ console.error('The camera is occupied by another application');
131
+ break;
132
+ case DeviceError.NotSupportCapture:
133
+ console.error('The current browser does not support camera capture');
134
+ break;
135
+ default:
136
+ break;
137
+ }
138
+ });
139
+ ```
140
+
141
+ ## Implementing Microphone Management
142
+
143
+ You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to control turning the local microphone on/off, muting, adjusting volume, and displaying real-time volume, and to listen for capture status and errors.
144
+
145
+ ### Step 1: Turn the microphone on/off
146
+ ``` typescript
147
+ import { useDeviceState, DeviceStatus } from 'tuikit-atomicx-vue3/room';
148
+ const { microphoneStatus, openLocalMicrophone, closeLocalMicrophone } = useDeviceState();
149
+ const toggleMicrophone = async () => {
150
+ if (microphoneStatus.value === DeviceStatus.On) {
151
+ await closeLocalMicrophone();
152
+ } else {
153
+ await openLocalMicrophone();
154
+ }
155
+ };
156
+ ```
157
+
158
+ ### Step 2: Get/switch the microphone device
159
+
160
+ #### Example of getting/switching the microphone in a desktop browser
161
+
162
+ You can use [microphoneList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#microphoneList) to get all available microphone devices, and use the [setCurrentMicrophone](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentMicrophone) method to switch the currently used microphone.
163
+ ``` typescript
164
+ import { useDeviceState } from 'tuikit-atomicx-vue3/room';
165
+
166
+ const {
167
+ microphoneList,
168
+ currentMicrophone,
169
+ getMicrophoneList,
170
+ setCurrentMicrophone
171
+ } = useDeviceState();
172
+
173
+ // Get the microphone list
174
+ await getMicrophoneList();
175
+
176
+ // Iterate and display available microphones
177
+ microphoneList.value.forEach((mic) => {
178
+ console.log(`Microphone: ${mic.deviceName} (${mic.deviceId})`);
179
+ });
180
+
181
+ // Switch to the specified microphone
182
+ const switchMicrophone = async (deviceId: string) => {
183
+ await setCurrentMicrophone({ deviceId });
184
+ };
185
+
186
+ // Listen for changes to the current microphone
187
+ watch(currentMicrophone, (mic) => {
188
+ if (mic) {
189
+ console.log('Currently used microphone:', mic.deviceName);
190
+ }
191
+ });
192
+ ```
193
+
194
+ ### Step 3: Set the capture volume
195
+
196
+ You can use the [setCaptureVolume](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCaptureVolume) method to adjust the capture volume of the local microphone.
197
+ ``` typescript
198
+ import { useDeviceState } from 'tuikit-atomicx-vue3/room';
199
+ const { captureVolume, setCaptureVolume } = useDeviceState();
200
+
201
+ // Set the capture volume to 50%
202
+ await setCaptureVolume(50);
203
+
204
+ // Listen for changes to the capture volume
205
+ watch(captureVolume, (volume) => {
206
+ console.log('Current capture volume:', volume);
207
+ });
208
+ ```
209
+
210
+ ### Step 4: Display real-time volume
211
+
212
+ The [currentMicVolume](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#currentMicVolume) property updates the local microphone's capture volume in real time, and can be used for the dynamic display of a volume bar.
213
+ ``` typescript
214
+ <template>
215
+ <div class="mic-volume">
216
+ <label>Microphone volume</label>
217
+ <div class="volume-bar-container">
218
+ <div
219
+ class="volume-bar"
220
+ :style="{ width: `${currentMicVolume}%` }"
221
+ />
222
+ </div>
223
+ <span>{{ currentMicVolume }}</span>
224
+ </div>
225
+ </template>
226
+
227
+ <script setup lang="ts">
228
+ import { useDeviceState } from 'tuikit-atomicx-vue3/room';
229
+ const { currentMicVolume } = useDeviceState();
230
+ </script>
231
+
232
+ <style scoped>
233
+ .volume-bar-container {
234
+ width: 200px;
235
+ height: 8px;
236
+ background-color: #e0e0e0;
237
+ border-radius: 4px;
238
+ overflow: hidden;
239
+ }
240
+
241
+ .volume-bar {
242
+ height: 100%;
243
+ background-color: #4caf50;
244
+ transition: width 0.1s ease;
245
+ }
246
+ </style>
247
+ ```
248
+
249
+ ### Step 5: Handle microphone capture errors
250
+
251
+ When an error occurs during microphone capture, you can obtain the error information via the [microphoneLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#microphoneLastError) data.
252
+ ``` typescript
253
+ import { useDeviceState, DeviceError } from 'tuikit-atomicx-vue3/room';
254
+ const { microphoneLastError } = useDeviceState();
255
+
256
+ // Listen for microphone errors
257
+ watch(microphoneLastError, (error) => {
258
+ switch (error) {
259
+ case DeviceError.NoSystemPermission:
260
+ console.error('Microphone permission denied. Please enable microphone permission in system settings');
261
+ break;
262
+ case DeviceError.NoDeviceDetected:
263
+ console.error('No microphone device detected');
264
+ break;
265
+ case DeviceError.OccupiedError:
266
+ console.error('The microphone is occupied by another application');
267
+ break;
268
+ case DeviceError.NotSupportCapture:
269
+ console.error('The current browser does not support microphone capture');
270
+ break;
271
+ default:
272
+ break;
273
+ }
274
+ });
275
+ ```
276
+
277
+ ## Implementing Speaker Management
278
+
279
+ The speaker (playback device) mainly involves switching devices and setting the playback volume.
280
+
281
+ ### Step 1: Get/switch the speaker device
282
+
283
+ You can use [speakerList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#speakerList) to get all available speaker devices, and use the [setCurrentSpeaker](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentSpeaker) method to switch the currently used speaker.
284
+ ``` typescript
285
+ import { useDeviceState } from 'tuikit-atomicx-vue3/room';
286
+ const {
287
+ speakerList,
288
+ currentSpeaker,
289
+ getSpeakerList,
290
+ setCurrentSpeaker
291
+ } = useDeviceState();
292
+
293
+ // Get the speaker list
294
+ await getSpeakerList();
295
+
296
+ // Iterate and display available speakers
297
+ speakerList.value.forEach((speaker) => {
298
+ console.log(`Speaker: ${speaker.deviceName} (${speaker.deviceId})`);
299
+ });
300
+
301
+ // Switch to the specified speaker
302
+ const switchSpeaker = async (deviceId: string) => {
303
+ await setCurrentSpeaker({ deviceId });
304
+ };
305
+
306
+ // Listen for changes to the current speaker
307
+ watch(currentSpeaker, (speaker) => {
308
+ if (speaker) {
309
+ console.log('Currently used speaker:', speaker.deviceName);
310
+ }
311
+ });
312
+ ```
313
+
314
+ ### Step 2: Set the playback volume
315
+
316
+ You can use the [setOutputVolume](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setOutputVolume) method to adjust the playback volume of the speaker.
317
+ ``` typescript
318
+ import { useDeviceState } from 'tuikit-atomicx-vue3/room';
319
+ const { outputVolume, setOutputVolume } = useDeviceState();
320
+
321
+ // Set the playback volume to 60%
322
+ await setOutputVolume(60);
323
+
324
+ // Listen for changes to the playback volume
325
+ watch(outputVolume, (volume) => {
326
+ console.log('Current playback volume:', volume);
327
+ });
328
+ ```
329
+
330
+ ## Implementing Network Quality Monitoring
331
+
332
+ Using the [networkInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#networkInfo) data from [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState), you can monitor the local user's network quality in real time.
333
+
334
+ > **Note:**
335
+ >
336
+
337
+ > Valid data can only be obtained from [networkInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#networkInfo) when the local user has joined a room via [joinRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#joinRoom) and turned on the microphone or camera.
338
+ >
339
+
340
+ ``` typescript
341
+ <template>
342
+ <div class="network-indicator" @click="showDetails = !showDetails">
343
+ <TUIIcon v-if="networkIcon" :icon="networkIcon" />
344
+ <span class="network-text">{{ networkText }}</span>
345
+ <div v-if="showDetails" class="network-details">
346
+ <div>Latency: {{ networkInfo?.delay }}ms</div>
347
+ <div>Upstream loss: {{ networkInfo?.upLoss }}%</div>
348
+ <div>Downstream loss: {{ networkInfo?.downLoss }}%</div>
349
+ </div>
350
+ </div>
351
+ </template>
352
+
353
+ <script setup lang="ts">
354
+ import { computed, ref } from 'vue';
355
+ import {
356
+ IconNetworkStability,
357
+ IconNetworkFluctuation,
358
+ IconNetworkLag,
359
+ IconNetworkDisconnected,
360
+ IconArrowStrokeUp,
361
+ } from '@tencentcloud/uikit-base-component-vue3';
362
+ import { useDeviceState, NetworkQuality } from 'tuikit-atomicx-vue3/room';
363
+
364
+ const { networkInfo } = useDeviceState();
365
+ const showDetails = ref(false);
366
+
367
+ // Network quality icon
368
+ const networkIcon = computed(() => {
369
+ if (!networkInfo.value) return '';
370
+ switch (networkInfo.value.quality) {
371
+ case NetworkQuality.Excellent:
372
+ case NetworkQuality.Good:
373
+ return IconNetworkStability;
374
+ case NetworkQuality.Poor:
375
+ return IconNetworkFluctuation;
376
+ case NetworkQuality.Bad:
377
+ case NetworkQuality.VeryBad:
378
+ return IconNetworkLag;
379
+ case NetworkQuality.Down:
380
+ return IconNetworkDisconnected;
381
+ default:
382
+ return '';
383
+ }
384
+ });
385
+
386
+ // Network quality text
387
+ const networkText = computed(() => {
388
+ if (!networkInfo.value) return 'Unknown';
389
+ switch (networkInfo.value.quality) {
390
+ case NetworkQuality.Excellent:
391
+ return 'Excellent';
392
+ case NetworkQuality.Good:
393
+ return 'Good';
394
+ case NetworkQuality.Poor:
395
+ return 'Fair';
396
+ case NetworkQuality.Bad:
397
+ return 'Poor';
398
+ case NetworkQuality.VeryBad:
399
+ return 'Very poor';
400
+ case NetworkQuality.Down:
401
+ return 'Disconnected';
402
+ default:
403
+ return 'Unknown';
404
+ }
405
+ });
406
+ </script>
407
+
408
+ <style scoped>
409
+
410
+ .network-indicator {
411
+ position: relative;
412
+ display: flex;
413
+ align-items: center;
414
+ gap: 8px;
415
+ padding: 8px 12px;
416
+ border-radius: 4px;
417
+ cursor: pointer;
418
+ }
419
+
420
+ .network-details {
421
+ position: absolute;
422
+ top: 100%;
423
+ left: 0;
424
+ margin-top: 4px;
425
+ padding: 8px;
426
+ background: white;
427
+ border-radius: 4px;
428
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
429
+ font-size: 12px;
430
+ white-space: nowrap;
431
+ z-index: 2;
432
+ }
433
+ </style>
434
+ ```
435
+
436
+ ## API Documentation
437
+
438
+ |**State/Component**|**Description**|**API Documentation**|
439
+ |---------|---------|---------|
440
+ |**useDeviceState**|Contains the audio/video device state, the audio/video device lists, and operation interfaces.|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState)|
441
+
442
+ ## FAQ
443
+
444
+ ### If a user's computer has no microphone or speaker device, can they still enter an audio/video room?
445
+
446
+ Yes, they can enter the room. Even without a microphone, speaker, or camera, a user can still successfully call the `joinRoom` interface to enter an audio/video room. However, in this state, the user will encounter the following interaction issues.
447
+
448
+ **Feature limitations:**
449
+ - **Unable to start media capture:** Because the system's underlying layer cannot drive the relevant hardware, calling the [openLocalMicrophone](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#openLocalMicrophone) or [openLocalCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#openLocalCamera) interface will trigger an asynchronous error. In this case, the [microphoneLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#microphoneLastError) or [cameraLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraLastError) property will return `DeviceError.NoDeviceDetected` (no device detected).
450
+
451
+ - **Capture side limited:** The local device cannot capture and transmit audio (requires a microphone) or video (requires a camera).
452
+
453
+ - **Playback side limited:** Because the speaker device is missing, the user will not be able to hear the audio of other participants in the room.
454
+
455
+ **Features that can still be used:**
456
+
457
+ View-only mode: The user can still watch video streams or screen sharing shared by remote participants.
458
+
459
+ ### How do I implement device hot-plug detection?
460
+
461
+ Atomicx has a built-in device hot-plug detection feature. When a media device is plugged in or unplugged, the device list and current device data are updated automatically.
@@ -0,0 +1,216 @@
1
+ The basic beauty feature allows users to apply smoothing, whitening, and rosy effects to their portrait during video calls or live streaming.
2
+
3
+ ## Use Cases
4
+ - **Video conferencing:** Reduces skin blemishes and brightens the complexion, making participants look more professional and energetic.
5
+
6
+ - **Live streaming:** Streamers use the beauty feature to improve the visual quality of the image and attract more viewers.
7
+
8
+ - **Online education:** Teachers and students maintain a clean and natural appearance, creating a pleasant classroom atmosphere.
9
+
10
+ ## Prerequisites
11
+ - **User status:** The user has completed login authentication via useLoginState, is in the **logged-in** state. See the Integration Overview.
12
+
13
+ - **Environment dependency:** The project has already imported `tuikit-atomicx-vue3`.
14
+
15
+ - **Device requirements:** An available camera device is required, and the user must have granted camera access permission. If the user denies the permission, the virtual background feature will not work.
16
+
17
+ ## Implementing the Basic Beauty Feature
18
+
19
+ This feature provides two integration options. You can choose the one that best fits your business needs:
20
+ - **Option 1 (Recommended):** Quick integration using UI components. Directly import the beauty panel component provided by `tuikit-atomicx-vue3` ([FreeBeautyPanel](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/FreeBeautyPanel)) and embed it into your application's dialog. This has the lowest development cost.
21
+
22
+ - **Option 2 (Advanced):** Custom integration using low-level APIs. Implement the UI and interaction logic yourself based on the atomicx-core SDK API [useFreeBeautyState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-FreeBeautyState) state hook. This offers the highest flexibility.
23
+
24
+ ## Option 1: Quick Integration Using UI Components
25
+
26
+ `tuikit-atomicx-vue3` provides the core beauty settings panel component:
27
+ - [**FreeBeautyPanel**](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/FreeBeautyPanel)**:** The basic beauty configuration panel, including parameter adjustment for smoothing, whitening, and rosy effects.
28
+
29
+ ### Step 1: Import the Component
30
+ ``` typescript
31
+ import { FreeBeautyPanel } from 'tuikit-atomicx-vue3/room';
32
+ ```
33
+
34
+ ### Step 2: Use the Component
35
+
36
+ It is generally recommended to place `FreeBeautyPanel` inside a Dialog or Modal, and trigger its display via a button click.
37
+
38
+ **The following example shows how to implement a complete interaction where clicking a button opens the beauty settings:**
39
+
40
+ > **Note:**
41
+ >
42
+
43
+ > All TUIKit components must be wrapped inside UIKitProvider; otherwise, they will not be able to obtain their context dependencies, resulting in abnormal styling.
44
+ >
45
+
46
+ ``` typescript
47
+ <template>
48
+ <UIKitProvider theme="light" language="en-US">
49
+ <div class="toolbar-container">
50
+ <!-- 1. Trigger button -->
51
+ <button @click="openBeautySettings">Set Beauty</button>
52
+
53
+ <!-- 2. Settings dialog -->
54
+ <div v-if="showSettings" class="modal-mask">
55
+ <div class="modal-content">
56
+ <div class="modal-header">
57
+ <span>Basic Beauty</span>
58
+ <button @click="showSettings = false">Close</button>
59
+ </div>
60
+
61
+ <div class="modal-body">
62
+ <!-- 3. Import the panel component -->
63
+ <!-- @close event: triggered when the user clicks the close button inside the panel (if any) -->
64
+ <FreeBeautyPanel @close="showSettings = false" />
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </UIKitProvider>
70
+ </template>
71
+
72
+ <script setup lang="ts">
73
+ import { ref } from 'vue';
74
+ import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
75
+ import { FreeBeautyPanel, useDeviceState } from 'tuikit-atomicx-vue3/room';
76
+
77
+ const showSettings = ref(false);
78
+ const { cameraList } = useDeviceState();
79
+
80
+ const openBeautySettings = () => {
81
+ // 1. Check whether there is an available camera
82
+ if (cameraList.value.length === 0) {
83
+ alert('No camera detected; cannot set beauty');
84
+ return;
85
+ }
86
+
87
+ // 2. Open the settings panel
88
+ showSettings.value = true;
89
+ };
90
+ </script>
91
+
92
+ <style scoped>
93
+ .modal-mask {
94
+ position: fixed; top: 0; left: 0; width: 100%; height: 100%;
95
+ background: rgba(0,0,0,0.5); display: flex; justify-content: center; align-items: center; z-index: 1000;
96
+ }
97
+ .modal-content { background: white; width: 600px; border-radius: 8px; overflow: hidden; }
98
+ .modal-header { padding: 16px; display: flex; justify-content: space-between; border-bottom: 1px solid #eee; }
99
+ .modal-body { padding: 16px; }
100
+ </style>
101
+ ```
102
+
103
+ The internal logic of this component is as follows:
104
+ - **Show the panel:** After the user clicks the button, a dialog containing `FreeBeautyPanel` pops up.
105
+
106
+ - **Adjust parameters:** The user drags the sliders in the panel to adjust the smoothing, whitening, and rosy parameters.
107
+
108
+ - **Real-time preview:** During adjustment, the preview interface is called in real time to preview the beauty effect.
109
+
110
+ - **Save and apply:** When the panel is closed (triggering the `@close` event), the current settings are automatically saved so that they take effect for remote users.
111
+
112
+ ## Option 2: Custom Integration Using Low-Level APIs
113
+
114
+ This section mainly describes how to implement basic beauty via the atomicx-core SDK API [useFreeBeautyState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-FreeBeautyState) interface.
115
+
116
+ ### Step 1: Set Up the Preview
117
+
118
+ When the user adjusts the beauty parameters (for example, by dragging a slider), use [setFreeBeauty](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setFreeBeauty) for real-time preview. At this point, the effect is only visible locally and will not be transmitted to remote users.
119
+
120
+ > **Note:**
121
+ >
122
+
123
+ > The value range of the parameters is 0-100.
124
+ >
125
+
126
+ ``` typescript
127
+ import { useFreeBeautyState } from 'tuikit-atomicx-vue3/room';
128
+
129
+ const { setFreeBeauty, beautyConfig } = useFreeBeautyState();
130
+
131
+ // Example: adjust the beauty parameters
132
+ const updatePreview = async (beauty: number, white: number, ruddy: number) => {
133
+ // The values in beautyConfig update automatically; this demonstrates how to set the preview manually
134
+ await setFreeBeauty({
135
+ beautyLevel: beauty, // Smoothing (0-100)
136
+ whitenessLevel: white, // Whitening (0-100)
137
+ ruddinessLevel: ruddy // Rosy (0-100)
138
+ });
139
+ };
140
+ ```
141
+
142
+ ### Step 2: Save and Apply
143
+
144
+ After the user confirms that they are satisfied with the preview, call [saveBeautySetting](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#saveBeautySetting) to apply the current configuration to the video stream. At this point, remote users can see the beauty effect.
145
+
146
+ > **Note:**
147
+ >
148
+
149
+ > The beauty feature depends on a camera device. You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to check the device status.
150
+ >
151
+ > - [cameraList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraList): The list of currently available camera devices. If the list is empty, it means no camera was detected or camera permission is denied.
152
+
153
+ ``` typescript
154
+ import { useFreeBeautyState } from 'tuikit-atomicx-vue3/room';
155
+
156
+ const { saveBeautySetting } = useFreeBeautyState();
157
+
158
+ const applyBeauty = async () => {
159
+ // Save the currently previewed settings so that they take effect for remote users
160
+ await saveBeautySetting();
161
+ console.log('Beauty has taken effect');
162
+ };
163
+ ```
164
+
165
+ ### Step 3: Disable the Beauty Effect
166
+
167
+ To disable beauty, simply set all parameters to 0 and save.
168
+ ``` typescript
169
+ const closeBeauty = async () => {
170
+ // 1. Set all parameters to 0 and preview
171
+ await setFreeBeauty({
172
+ beautyLevel: 0,
173
+ whitenessLevel: 0,
174
+ ruddinessLevel: 0
175
+ });
176
+
177
+ // 2. Save to apply
178
+ await saveBeautySetting();
179
+ };
180
+ ```
181
+
182
+ ## Development Notes
183
+ - **Parameter range:** The parameters received by `setFreeBeauty` (`beautyLevel`, `whitenessLevel`, `ruddinessLevel`) all have a range of 0-100.
184
+
185
+ - **Preview and apply:** To provide a better user experience, beauty adjustment is divided into two phases: **"preview"** and **"apply"**. `setFreeBeauty` is only used for local preview; you must call `saveBeautySetting` for `trtcCloud.setBeautyStyle` to be officially invoked and applied to the published stream.
186
+
187
+ - **Device dependency:** The beauty feature depends on the video stream, so the effect can only be seen when the camera is enabled. If no camera is detected, it is recommended to disable the beauty entry.
188
+
189
+ - **Performance consumption:** Enabling beauty adds a certain amount of CPU and GPU load. It is recommended to guide users on low-end devices to use it moderately.
190
+
191
+ ## FAQ
192
+
193
+ ### **Why can't remote users see the effect after I adjust the beauty settings?**
194
+
195
+ Please confirm whether `saveBeautySetting()` was called. `setFreeBeauty()` is only used for local preview; only after saving will it be applied to the published video stream.
196
+
197
+ ### **Can I set beauty without a camera?**
198
+
199
+ No. The beauty feature processes the video stream, so if no video image is captured, beauty cannot take effect. It is recommended to hide or disable the beauty entry when there is no camera.
200
+
201
+ ### **After leaving the room or turning off the camera, do I need to reset beauty manually?**
202
+
203
+ No. `useFreeBeautyState` already implements automatic state management internally:
204
+ - Camera switching: Beauty is paused when the camera is turned off, and the last saved settings are automatically restored when it is turned back on.
205
+
206
+ - Entering/leaving rooms: All beauty parameters are automatically reset when leaving the room, with no manual cleanup required by the developer.
207
+
208
+ ## **Example Project**
209
+
210
+ Tencent Cloud provides the example project [atomicx-vite-vue3-ts](https://github.com/Tencent-RTC/TUIRoomKit/tree/main/Web/example/atomicx-vite-vue3-ts) on GitHub, which you can refer to in order to implement the complete RoomKit functionality.
211
+
212
+ ## API Documentation
213
+
214
+ |**State/Component**|**Description**|**API Documentation**|
215
+ |---------|---------|---------|
216
+ |**useFreeBeautyState**|Free beauty feature management|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-FreeBeautyState)|