fcr-ui-scene 3.4.0 → 3.4.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 (324) hide show
  1. package/lib/ scenes/base.d.ts +10 -0
  2. package/lib/ scenes/base.js +75 -0
  3. package/lib/ scenes/main-scene.d.ts +43 -0
  4. package/lib/ scenes/main-scene.js +368 -0
  5. package/lib/ scenes/waiting-scene.d.ts +31 -0
  6. package/lib/ scenes/waiting-scene.js +119 -0
  7. package/lib/common/device-store.d.ts +1 -2
  8. package/lib/common/device-store.js +169 -153
  9. package/lib/common/device-stream-store.d.ts +5 -29
  10. package/lib/common/device-stream-store.js +47 -93
  11. package/lib/common/room-store.js +4 -4
  12. package/lib/common/security-store.d.ts +6 -16
  13. package/lib/common/security-store.js +16 -17
  14. package/lib/common/type.d.ts +8 -0
  15. package/lib/common/type.js +6 -0
  16. package/lib/creator.js +3 -3
  17. package/lib/electron/app.js +21 -5
  18. package/lib/electron/bootstrap-sdk.js +1 -2
  19. package/lib/electron/injections.d.ts +1 -1
  20. package/lib/error-fallback.css +62 -0
  21. package/lib/error-fallback.d.ts +2 -0
  22. package/lib/error-fallback.js +19 -0
  23. package/lib/modules/Interpreter/action/delete-btn/index.d.ts +1 -1
  24. package/lib/modules/Interpreter/action/edit-btn/index.d.ts +0 -1
  25. package/lib/modules/Interpreter/action/edit-btn/index.js +0 -2
  26. package/lib/modules/Interpreter/action/switch-btn/index.css +3 -0
  27. package/lib/modules/Interpreter/action/switch-btn/index.d.ts +2 -4
  28. package/lib/modules/Interpreter/action/switch-btn/index.js +3 -3
  29. package/lib/modules/Interpreter/footer/index.css +4 -3
  30. package/lib/modules/Interpreter/index.d.ts +2 -17
  31. package/lib/modules/Interpreter/index.js +2 -18
  32. package/lib/modules/Interpreter/interpreter-list/index.css +5 -1
  33. package/lib/modules/Interpreter/interpreter-list/index.d.ts +1 -0
  34. package/lib/modules/Interpreter/interpreter-list/index.js +3 -1
  35. package/lib/modules/Interpreter/interpreter-list/interpreter-item/components/pick-language/index.css +0 -6
  36. package/lib/modules/Interpreter/interpreter-list/interpreter-item/components/pick-language/index.d.ts +1 -1
  37. package/lib/modules/Interpreter/interpreter-list/interpreter-item/components/pick-user/index.css +1 -3
  38. package/lib/modules/Interpreter/interpreter-list/interpreter-item/components/pick-user/index.d.ts +1 -6
  39. package/lib/modules/Interpreter/interpreter-list/interpreter-item/components/pick-user/index.js +55 -81
  40. package/lib/modules/Interpreter/interpreter-list/interpreter-item/components/pick-user/option-Item.d.ts +6 -0
  41. package/lib/modules/Interpreter/interpreter-list/interpreter-item/components/pick-user/option-Item.js +58 -0
  42. package/lib/modules/Interpreter/interpreter-list/interpreter-item/index.d.ts +1 -1
  43. package/lib/modules/Interpreter/store.d.ts +36 -29
  44. package/lib/modules/Interpreter/store.js +575 -606
  45. package/lib/modules/Interpreter/type.d.ts +41 -0
  46. package/lib/modules/Interpreter/type.js +20 -0
  47. package/lib/modules/Interpreter/utils.d.ts +12 -0
  48. package/lib/modules/Interpreter/utils.js +139 -0
  49. package/lib/modules/Interpreter/view.d.ts +0 -1
  50. package/lib/modules/Interpreter/view.js +3 -5
  51. package/lib/modules/action-bar/action-bar-collapes-items.d.ts +1 -1
  52. package/lib/modules/action-bar/action-bar-collapes-items.js +11 -11
  53. package/lib/modules/action-bar/apps/useInterpreter.js +4 -2
  54. package/lib/modules/action-bar/components/apps/app-item/index.css +35 -0
  55. package/lib/modules/action-bar/components/apps/app-item/index.d.ts +12 -0
  56. package/lib/modules/action-bar/components/apps/app-item/index.js +61 -0
  57. package/lib/modules/action-bar/components/apps/appitems.d.ts +5 -0
  58. package/lib/modules/action-bar/components/apps/appitems.js +45 -0
  59. package/lib/modules/action-bar/components/apps/index.css +8 -0
  60. package/lib/modules/action-bar/components/apps/index.d.ts +4 -0
  61. package/lib/modules/action-bar/components/apps/index.js +57 -0
  62. package/lib/modules/action-bar/components/apps/useAppItemOptions.d.ts +9 -0
  63. package/lib/modules/action-bar/components/apps/useAppItemOptions.js +29 -0
  64. package/lib/modules/action-bar/components/apps/useBeautyBackground.d.ts +10 -0
  65. package/lib/modules/action-bar/components/apps/useBeautyBackground.js +36 -0
  66. package/lib/modules/action-bar/components/apps/useInterpreter.d.ts +14 -0
  67. package/lib/modules/action-bar/components/apps/useInterpreter.js +37 -0
  68. package/lib/modules/action-bar/components/apps/useLiveStreaming.d.ts +16 -0
  69. package/lib/modules/action-bar/components/apps/useLiveStreaming.js +41 -0
  70. package/lib/modules/action-bar/components/board/index.d.ts +4 -0
  71. package/lib/modules/action-bar/components/board/index.js +34 -0
  72. package/lib/modules/action-bar/components/breakout-room/index.d.ts +4 -0
  73. package/lib/modules/action-bar/components/breakout-room/index.js +32 -0
  74. package/lib/modules/action-bar/components/chat/index.css +80 -0
  75. package/lib/modules/action-bar/components/chat/index.d.ts +5 -0
  76. package/lib/modules/action-bar/components/chat/index.js +154 -0
  77. package/lib/modules/action-bar/components/device/index.css +162 -0
  78. package/lib/modules/action-bar/components/device/index.d.ts +8 -0
  79. package/lib/modules/action-bar/components/device/index.js +611 -0
  80. package/lib/modules/action-bar/components/interpreter/index.d.ts +6 -0
  81. package/lib/modules/action-bar/components/interpreter/index.js +41 -0
  82. package/lib/modules/action-bar/components/item.d.ts +27 -0
  83. package/lib/modules/action-bar/components/item.js +164 -0
  84. package/lib/modules/action-bar/components/leave/assign-host.d.ts +10 -0
  85. package/lib/modules/action-bar/components/leave/assign-host.js +64 -0
  86. package/lib/modules/action-bar/components/leave/index.css +126 -0
  87. package/lib/modules/action-bar/components/leave/index.d.ts +3 -0
  88. package/lib/modules/action-bar/components/leave/index.js +159 -0
  89. package/lib/modules/action-bar/components/leave/leave-meeting.d.ts +18 -0
  90. package/lib/modules/action-bar/components/leave/leave-meeting.js +153 -0
  91. package/lib/modules/action-bar/components/live-streaming/index.d.ts +4 -0
  92. package/lib/modules/action-bar/components/live-streaming/index.js +39 -0
  93. package/lib/modules/action-bar/components/more/index.css +114 -0
  94. package/lib/modules/action-bar/components/more/index.d.ts +5 -0
  95. package/lib/modules/action-bar/components/more/index.js +83 -0
  96. package/lib/modules/action-bar/components/more/poppover-content.d.ts +8 -0
  97. package/lib/modules/action-bar/components/more/poppover-content.js +400 -0
  98. package/lib/modules/action-bar/components/participants/index.css +21 -0
  99. package/lib/modules/action-bar/components/participants/index.d.ts +5 -0
  100. package/lib/modules/action-bar/components/participants/index.js +83 -0
  101. package/lib/modules/action-bar/components/record/index.css +39 -0
  102. package/lib/modules/action-bar/components/record/index.d.ts +5 -0
  103. package/lib/modules/action-bar/components/record/index.js +166 -0
  104. package/lib/modules/action-bar/components/record/stop-record-dialog.d.ts +5 -0
  105. package/lib/modules/action-bar/components/record/stop-record-dialog.js +48 -0
  106. package/lib/modules/action-bar/components/respond/index.d.ts +4 -0
  107. package/lib/modules/action-bar/components/respond/index.js +32 -0
  108. package/lib/modules/action-bar/components/screen-share/index.d.ts +4 -0
  109. package/lib/modules/action-bar/components/screen-share/index.js +106 -0
  110. package/lib/modules/action-bar/components/screen-share/submenu.d.ts +1 -0
  111. package/lib/modules/action-bar/components/screen-share/submenu.js +154 -0
  112. package/lib/modules/action-bar/components/security/index.d.ts +4 -0
  113. package/lib/modules/action-bar/components/security/index.js +58 -0
  114. package/lib/modules/action-bar/components/settings/index.d.ts +4 -0
  115. package/lib/modules/action-bar/components/settings/index.js +42 -0
  116. package/lib/modules/action-bar/index.css +23 -1
  117. package/lib/modules/action-bar/index.d.ts +2 -22
  118. package/lib/modules/action-bar/index.dev.js +37 -16
  119. package/lib/modules/action-bar/notification-bar/components/interpreter/index.css +58 -0
  120. package/lib/modules/action-bar/notification-bar/components/interpreter/index.d.ts +8 -0
  121. package/lib/modules/action-bar/notification-bar/components/interpreter/index.js +100 -0
  122. package/lib/modules/action-bar/notification-bar/components/virtual-image/index.css +56 -0
  123. package/lib/modules/action-bar/notification-bar/components/virtual-image/index.d.ts +5 -0
  124. package/lib/modules/action-bar/notification-bar/components/virtual-image/index.js +33 -0
  125. package/lib/modules/action-bar/notification-bar/dome.png +0 -0
  126. package/lib/modules/action-bar/notification-bar/fcr_translateswitch.png +0 -0
  127. package/lib/modules/action-bar/notification-bar/index.css +74 -0
  128. package/lib/modules/action-bar/notification-bar/index.d.ts +2 -0
  129. package/lib/modules/action-bar/notification-bar/index.js +99 -0
  130. package/lib/modules/action-bar/screen-share/index.js +5 -0
  131. package/lib/modules/action-bar/security/index.js +1 -0
  132. package/lib/modules/action-bar/smaller.js +2 -2
  133. package/lib/modules/action-bar/store.d.ts +6 -7
  134. package/lib/modules/action-bar/store.js +114 -128
  135. package/lib/modules/action-bar/trigger-input-language-room/fcr_translateswitch.png +0 -0
  136. package/lib/modules/action-bar/trigger-input-language-room/index.css +86 -0
  137. package/lib/modules/action-bar/trigger-input-language-room/index.d.ts +15 -0
  138. package/lib/modules/action-bar/trigger-input-language-room/index.js +220 -0
  139. package/lib/modules/action-bar/trigger-output-language-room/constant.d.ts +10 -0
  140. package/lib/modules/action-bar/trigger-output-language-room/constant.js +8 -0
  141. package/lib/modules/action-bar/trigger-output-language-room/guide-tooltip/index.css +22 -0
  142. package/lib/modules/action-bar/trigger-output-language-room/guide-tooltip/index.d.ts +14 -0
  143. package/lib/modules/action-bar/trigger-output-language-room/guide-tooltip/index.js +75 -0
  144. package/lib/modules/action-bar/trigger-output-language-room/index.d.ts +4 -0
  145. package/lib/modules/action-bar/trigger-output-language-room/index.js +98 -0
  146. package/lib/modules/action-bar/trigger-output-language-room/trigger-language-room.d.ts +5 -0
  147. package/lib/modules/action-bar/trigger-output-language-room/trigger-language-room.js +66 -0
  148. package/lib/modules/action-bar/trigger-output-language-room/trigger-main-room.d.ts +5 -0
  149. package/lib/modules/action-bar/trigger-output-language-room/trigger-main-room.js +36 -0
  150. package/lib/modules/action-bar/trigger-output-language-room/useChangeOutputRoomTool.d.ts +12 -0
  151. package/lib/modules/action-bar/trigger-output-language-room/useChangeOutputRoomTool.js +138 -0
  152. package/lib/modules/action-bar/view.js +6 -6
  153. package/lib/modules/audio-stream/index.d.ts +2 -15
  154. package/lib/modules/audio-stream/index.js +1 -3
  155. package/lib/modules/chat/chat-bar/index.css +5 -0
  156. package/lib/modules/chat/chat-bar/index.js +16 -14
  157. package/lib/modules/chat/chat-select/index.css +6 -3
  158. package/lib/modules/chat/chat.js +7 -6
  159. package/lib/modules/chat/index.css +10 -0
  160. package/lib/modules/chat/index.d.ts +2 -12
  161. package/lib/modules/chat/index.dev.js +14 -3
  162. package/lib/modules/chat/index.js +7 -20
  163. package/lib/modules/chat/message-list.js +1 -0
  164. package/lib/modules/chat/store.js +1 -1
  165. package/lib/modules/components/device-control/components/audio-menu/index.js +4 -4
  166. package/lib/modules/components/device-control/index.css +3 -0
  167. package/lib/modules/components/dialog-container/component/body.d.ts +7 -0
  168. package/lib/modules/components/dialog-container/component/body.js +46 -0
  169. package/lib/modules/components/dialog-container/index.css +78 -0
  170. package/lib/modules/components/dialog-container/index.d.ts +11 -0
  171. package/lib/modules/components/dialog-container/index.js +110 -0
  172. package/lib/modules/components/member-window/index.css +419 -0
  173. package/lib/modules/components/member-window/index.d.ts +76 -0
  174. package/lib/modules/components/member-window/index.js +888 -0
  175. package/lib/modules/components/security-menu/index.css +9 -0
  176. package/lib/modules/components/security-menu/index.js +74 -23
  177. package/lib/modules/components/tab-frame/index.css +40 -0
  178. package/lib/modules/components/tab-frame/index.d.ts +12 -0
  179. package/lib/modules/components/tab-frame/index.js +57 -0
  180. package/lib/modules/connection-gateway/components/computer/index.css +1 -0
  181. package/lib/modules/connection-gateway/components/phone/index.css +1 -1
  182. package/lib/modules/connection-gateway/index.d.ts +2 -9
  183. package/lib/modules/connection-gateway/store.d.ts +3 -11
  184. package/lib/modules/connection-gateway/store.js +1 -17
  185. package/lib/modules/connection-gateway/view.js +21 -4
  186. package/lib/modules/control-bar/components/cloud-recording-buttons.js +1 -1
  187. package/lib/modules/control-bar/index.d.ts +2 -16
  188. package/lib/modules/control-bar/index.js +10 -19
  189. package/lib/modules/control-bar/store.d.ts +3 -16
  190. package/lib/modules/control-bar/store.js +23 -5
  191. package/lib/modules/control-bar/view.js +17 -10
  192. package/lib/modules/device-pretest/settings/virtual-background-setting.js +1 -1
  193. package/lib/modules/dialog/components/Interpreter/electron.js +3 -25
  194. package/lib/modules/dialog/components/Interpreter/index.js +14 -43
  195. package/lib/modules/dialog/components/chat/electron.d.ts +1 -1
  196. package/lib/modules/dialog/components/chat/electron.js +6 -13
  197. package/lib/modules/dialog/components/chat/index.d.ts +1 -4
  198. package/lib/modules/dialog/components/chat/index.js +35 -41
  199. package/lib/modules/dialog/components/confirm/index.js +6 -7
  200. package/lib/modules/dialog/components/connection-gateway/electron.d.ts +1 -1
  201. package/lib/modules/dialog/components/connection-gateway/electron.js +9 -28
  202. package/lib/modules/dialog/components/connection-gateway/index.d.ts +0 -1
  203. package/lib/modules/dialog/components/connection-gateway/index.js +11 -56
  204. package/lib/modules/dialog/components/control-bar/index.js +6 -7
  205. package/lib/modules/dialog/components/device-setting/electron.js +4 -26
  206. package/lib/modules/dialog/components/device-setting/index.js +13 -41
  207. package/lib/modules/dialog/components/invite/index.js +16 -35
  208. package/lib/modules/dialog/components/live-streaming/index.js +18 -53
  209. package/lib/modules/dialog/components/participant/electron.js +4 -17
  210. package/lib/modules/dialog/components/participant/index.js +35 -26
  211. package/lib/modules/dialog/components/remove-admit-waiting-room/electron.js +3 -6
  212. package/lib/modules/dialog/components/remove-admit-waiting-room/index.d.ts +1 -1
  213. package/lib/modules/dialog/components/remove-admit-waiting-room/index.js +4 -14
  214. package/lib/modules/dialog/components/share-screen-selection/index.js +20 -5
  215. package/lib/modules/dialog/components/system-preference/electron.js +5 -8
  216. package/lib/modules/dialog/components/system-preference/index.js +4 -15
  217. package/lib/modules/dialog/components/toast/index.js +8 -12
  218. package/lib/modules/dialog/dialogs.js +2 -1
  219. package/lib/modules/dialog/hooks/useElectron.d.ts +6 -0
  220. package/lib/modules/dialog/hooks/useElectron.js +51 -9
  221. package/lib/modules/dialog/index.css +0 -2
  222. package/lib/modules/dialog/index.d.ts +2 -17
  223. package/lib/modules/dialog/store.d.ts +7 -39
  224. package/lib/modules/dialog/store.js +53 -152
  225. package/lib/modules/dialog/types/index.d.ts +59 -0
  226. package/lib/modules/event-confirm/view.js +4 -1
  227. package/lib/modules/invite/view.d.ts +4 -0
  228. package/lib/modules/invite/view.js +18 -22
  229. package/lib/modules/invite/voip-invite.js +3 -3
  230. package/lib/modules/layout/components/Aside.js +11 -1
  231. package/lib/modules/layout/components/Carousel.js +1 -1
  232. package/lib/modules/layout/components/Layout.js +7 -4
  233. package/lib/modules/layout/components/index.css +6 -1
  234. package/lib/modules/layout/index.js +8 -7
  235. package/lib/modules/layout/member-window/index.css +22 -9
  236. package/lib/modules/layout/member-window/index.js +16 -3
  237. package/lib/modules/layout/store.d.ts +1 -1
  238. package/lib/modules/layout/store.js +1 -7
  239. package/lib/modules/layout/video-window-datasource.js +11 -3
  240. package/lib/modules/notification/index.css +1 -0
  241. package/lib/modules/participant/attendee/index.css +1 -0
  242. package/lib/modules/participant/attendee/index.js +2 -1
  243. package/lib/modules/participant/components/drop-menu/index.css +1 -0
  244. package/lib/modules/participant/components/drop-menu/index.js +9 -9
  245. package/lib/modules/participant/index.css +5 -0
  246. package/lib/modules/participant/index.d.ts +2 -17
  247. package/lib/modules/participant/index.dev.js +38 -27
  248. package/lib/modules/participant/store.d.ts +4 -17
  249. package/lib/modules/participant/store.js +13 -13
  250. package/lib/modules/setting/audio-settings/audio-settings.js +13 -10
  251. package/lib/modules/setting/audio-settings/index.css +26 -1
  252. package/lib/modules/setting/general-settings/index.css +1 -1
  253. package/lib/modules/setting/index.css +2 -1
  254. package/lib/modules/setting/index.d.ts +2 -15
  255. package/lib/modules/setting/index.dev.js +19 -10
  256. package/lib/modules/setting/store.d.ts +5 -18
  257. package/lib/modules/setting/store.js +48 -20
  258. package/lib/modules/setting/translate-settings/index.css +3 -1
  259. package/lib/modules/setting/video-settings/index.css +5 -2
  260. package/lib/modules/share-screen/index.dev.js +20 -19
  261. package/lib/modules/share-screen/selection/index.css +2 -0
  262. package/lib/modules/share-screen/selection/index.js +83 -97
  263. package/lib/modules/share-screen/store.js +16 -36
  264. package/lib/modules/sound-effect/index.d.ts +2 -13
  265. package/lib/modules/sound-effect/index.js +1 -2
  266. package/lib/modules/state-bar/index.css +13 -2
  267. package/lib/modules/state-bar/index.d.ts +1 -5
  268. package/lib/modules/state-bar/index.dev.js +1 -1
  269. package/lib/modules/state-bar/index.js +0 -27
  270. package/lib/modules/state-bar/layout-config.js +1 -1
  271. package/lib/modules/state-bar/meeting-network-state.css +1 -1
  272. package/lib/modules/state-bar/recording.js +7 -4
  273. package/lib/modules/state-bar/view.js +1 -1
  274. package/lib/modules/video-window/index.d.ts +2 -2
  275. package/lib/modules/video-window/store.d.ts +2 -1
  276. package/lib/modules/video-window/store.js +2 -2
  277. package/lib/modules/waiting-room-layout/index.css +1 -3
  278. package/lib/modules/waiting-room-layout/index.d.ts +3 -1
  279. package/lib/modules/waiting-room-layout/index.js +10 -3
  280. package/lib/modules/whiteboard/index.d.ts +2 -13
  281. package/lib/modules/whiteboard/index.js +4 -5
  282. package/lib/providers/device-privilege-provider.d.ts +30 -0
  283. package/lib/providers/device-privilege-provider.js +386 -0
  284. package/lib/providers/device-provider.d.ts +246 -0
  285. package/lib/providers/device-provider.js +1741 -0
  286. package/lib/providers/device-stream-provider.d.ts +36 -0
  287. package/lib/providers/device-stream-provider.js +460 -0
  288. package/lib/providers/event-provider.d.ts +108 -0
  289. package/lib/providers/event-provider.js +288 -0
  290. package/lib/providers/interpreter-provider.d.ts +25 -0
  291. package/lib/providers/interpreter-provider.js +151 -0
  292. package/lib/providers/local-storage-provider.d.ts +8 -0
  293. package/lib/providers/local-storage-provider.js +31 -0
  294. package/lib/providers/monitor-provider.d.ts +15 -0
  295. package/lib/providers/monitor-provider.js +29 -0
  296. package/lib/providers/privilege-provider.d.ts +216 -0
  297. package/lib/providers/privilege-provider.js +966 -0
  298. package/lib/providers/renderer-provider.d.ts +43 -0
  299. package/lib/providers/renderer-provider.js +245 -0
  300. package/lib/providers/room-provider.d.ts +79 -0
  301. package/lib/providers/room-provider.js +439 -0
  302. package/lib/providers/session-provider.d.ts +26 -0
  303. package/lib/providers/session-provider.js +49 -0
  304. package/lib/runtime.d.ts +1 -1
  305. package/lib/scenes/base.d.ts +10 -0
  306. package/lib/scenes/base.js +75 -0
  307. package/lib/scenes/main-scene.d.ts +48 -0
  308. package/lib/scenes/main-scene.js +390 -0
  309. package/lib/scenes/waiting-scene.d.ts +31 -0
  310. package/lib/scenes/waiting-scene.js +129 -0
  311. package/lib/shared-data-source/config.d.ts +16 -0
  312. package/lib/shared-data-source/config.js +21 -0
  313. package/lib/type.d.ts +26 -1
  314. package/lib/ui-manager.d.ts +3 -0
  315. package/lib/ui-manager.js +154 -233
  316. package/lib/ui-node.d.ts +25 -0
  317. package/lib/ui-node.js +156 -0
  318. package/lib/utilities/constant.d.ts +15 -15
  319. package/lib/utilities/constant.js +15 -15
  320. package/lib/utilities/tools.d.ts +2 -0
  321. package/lib/utilities/tools.js +42 -10
  322. package/package.json +12 -11
  323. package/public/assets/fcr_leave2.svg +58 -0
  324. package/public/index.html +150 -13
@@ -0,0 +1,888 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.array.filter.js");
5
+ require("core-js/modules/es.array.for-each.js");
6
+ require("core-js/modules/es.array.push.js");
7
+ require("core-js/modules/es.object.define-properties.js");
8
+ require("core-js/modules/es.object.define-property.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
11
+ require("core-js/modules/es.object.keys.js");
12
+ require("core-js/modules/esnext.async-iterator.filter.js");
13
+ require("core-js/modules/esnext.async-iterator.for-each.js");
14
+ require("core-js/modules/esnext.iterator.filter.js");
15
+ require("core-js/modules/esnext.iterator.for-each.js");
16
+ require("core-js/modules/web.dom-collections.for-each.js");
17
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
18
+ Object.defineProperty(exports, "__esModule", {
19
+ value: true
20
+ });
21
+ exports.MemberWindowActions = exports.MemberWindow = exports.MemberBoard = exports.FcrUIVideoPlayer = exports.FcrUIRemoteVideoPlayer = exports.FcrUILocalVideoPlayer = void 0;
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
24
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
25
+ require("core-js/modules/es.array.find.js");
26
+ require("core-js/modules/es.array.includes.js");
27
+ require("core-js/modules/es.array.iterator.js");
28
+ require("core-js/modules/es.array.some.js");
29
+ require("core-js/modules/es.object.to-string.js");
30
+ require("core-js/modules/es.set.js");
31
+ require("core-js/modules/es.string.includes.js");
32
+ require("core-js/modules/es.string.iterator.js");
33
+ require("core-js/modules/esnext.async-iterator.find.js");
34
+ require("core-js/modules/esnext.async-iterator.some.js");
35
+ require("core-js/modules/esnext.iterator.constructor.js");
36
+ require("core-js/modules/esnext.iterator.find.js");
37
+ require("core-js/modules/esnext.iterator.some.js");
38
+ require("core-js/modules/esnext.set.add-all.js");
39
+ require("core-js/modules/esnext.set.delete-all.js");
40
+ require("core-js/modules/esnext.set.difference.v2.js");
41
+ require("core-js/modules/esnext.set.difference.js");
42
+ require("core-js/modules/esnext.set.every.js");
43
+ require("core-js/modules/esnext.set.filter.js");
44
+ require("core-js/modules/esnext.set.find.js");
45
+ require("core-js/modules/esnext.set.intersection.v2.js");
46
+ require("core-js/modules/esnext.set.intersection.js");
47
+ require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
48
+ require("core-js/modules/esnext.set.is-disjoint-from.js");
49
+ require("core-js/modules/esnext.set.is-subset-of.v2.js");
50
+ require("core-js/modules/esnext.set.is-subset-of.js");
51
+ require("core-js/modules/esnext.set.is-superset-of.v2.js");
52
+ require("core-js/modules/esnext.set.is-superset-of.js");
53
+ require("core-js/modules/esnext.set.join.js");
54
+ require("core-js/modules/esnext.set.map.js");
55
+ require("core-js/modules/esnext.set.reduce.js");
56
+ require("core-js/modules/esnext.set.some.js");
57
+ require("core-js/modules/esnext.set.symmetric-difference.v2.js");
58
+ require("core-js/modules/esnext.set.symmetric-difference.js");
59
+ require("core-js/modules/esnext.set.union.v2.js");
60
+ require("core-js/modules/esnext.set.union.js");
61
+ require("core-js/modules/web.dom-collections.iterator.js");
62
+ require("core-js/modules/web.timers.js");
63
+ var _classnames = _interopRequireDefault(require("classnames"));
64
+ var _mobxReact = require("mobx-react");
65
+ var _react = require("react");
66
+ var _mic = require("agora-ui-foundation/lib/components/icon/mic");
67
+ var _avatar = require("agora-ui-foundation/lib/components/avatar");
68
+ var _icon = require("agora-ui-foundation/lib/components/icon");
69
+ var _type = require("agora-ui-foundation/lib/components/icon/type");
70
+ var _popover = require("agora-ui-foundation/lib/components/popover");
71
+ var _tooltip = require("agora-ui-foundation/lib/components/tooltip");
72
+ var _i18n = require("agora-ui-foundation/lib/i18n");
73
+ var _type2 = require("fcr-core/lib/type");
74
+ var _hooks = require("../../../utilities/hooks");
75
+ var _type3 = require("../../layout/type");
76
+ require("./index.css");
77
+ var _store = require("../../layout/store");
78
+ var _localVideoPlayer = require("agora-ui-foundation/lib/components/local-video-player");
79
+ var _iconPhoneCall = require("agora-ui-foundation/lib/components/icon-phone-call");
80
+ var _videoTrackRenderContext = require("../../../utilities/video-track-render-context");
81
+ var _dialogs = require("../../dialog/dialogs");
82
+ var _constant = require("../../../utilities/constant");
83
+ var _type4 = require("../../video-window/type");
84
+ var _env = require("agora-foundation/lib/utilities/env");
85
+ var _fcrCore = require("fcr-core");
86
+ var _participantsMore = require("agora-ui-foundation/lib/components/participants/participants-more");
87
+ var _jsxRuntime = require("react/jsx-runtime");
88
+ var _excluded = ["isLocal"];
89
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
90
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
91
+ var MinAvatarSize = 53;
92
+ var MaxAvatarSize = 175;
93
+ var AvatarSizeRatio = 0.2445;
94
+ var AvatarTextSizeRatio = 0.32;
95
+ var HideControlsTimeout = 3000;
96
+ var meetingConnectorTypes = new Set([_fcrCore.FcrRoomConnectorType.SIP, _fcrCore.FcrRoomConnectorType.H323]);
97
+ var clamp = function clamp(val, min, max) {
98
+ return val < min ? min : val > max ? max : val;
99
+ };
100
+ var MemberWindow = exports.MemberWindow = (0, _mobxReact.observer)(function (_ref) {
101
+ var showAvatar = _ref.showAvatar,
102
+ windowData = _ref.windowData,
103
+ onDoubleClick = _ref.onDoubleClick,
104
+ slot = _ref.slot,
105
+ width = _ref.width,
106
+ height = _ref.height,
107
+ canShowSpeakerSpotlight = _ref.canShowSpeakerSpotlight,
108
+ onRemovePin = _ref.onRemovePin,
109
+ memberWindowPreviewType = _ref.memberWindowPreviewType,
110
+ videoRenderMode = _ref.videoRenderMode,
111
+ videoStreamType = _ref.videoStreamType;
112
+ var userName = windowData.userName,
113
+ videoStreamId = windowData.videoStreamId,
114
+ audioStreamId = windowData.audioStreamId,
115
+ userId = windowData.userId,
116
+ isMySelf = windowData.isMySelf,
117
+ hasMicrophoneAudioStream = windowData.hasMicrophoneAudioStream,
118
+ isPin = windowData.isPin,
119
+ isSpeakerSpotlight = windowData.isSpeakerSpotlight,
120
+ hasVideoStream = windowData.hasVideoStream,
121
+ windowId = windowData.windowId,
122
+ audioStreamConnectorType = windowData.audioStreamConnectorType,
123
+ videoStreamConnectorType = windowData.videoStreamConnectorType,
124
+ hasScreenSharing = windowData.hasScreenSharing;
125
+ var t = (0, _i18n.useI18n)();
126
+ var connectorType = audioStreamConnectorType !== _fcrCore.FcrRoomConnectorType.NONE ? audioStreamConnectorType : videoStreamConnectorType;
127
+ var isPhone = audioStreamConnectorType === _fcrCore.FcrRoomConnectorType.PSTN;
128
+ var isPhoneOnlyAudio = isPhone && !videoStreamId;
129
+ var isMeeting = meetingConnectorTypes.has(connectorType);
130
+ var suffixedName = userName + (isMySelf ? t('fmt_attendies_labels_setting_mine') : '');
131
+ var avatar = (0, _react.useMemo)(function () {
132
+ var avatarSize = clamp(Math.min(width || 246, height || 144) * AvatarSizeRatio, MinAvatarSize, MaxAvatarSize);
133
+ var avatarTextSize = avatarSize * AvatarTextSizeRatio;
134
+ return showAvatar ?
135
+ // 纯电话,显示绿色电话头像
136
+ isPhoneOnlyAudio ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_avatar.FcrAvatar, {
137
+ nickName: userName,
138
+ size: avatarSize,
139
+ textSize: avatarTextSize,
140
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
141
+ type: hasMicrophoneAudioStream ? _type.FcrIconType.FCR_PHONECALL3 : _type.FcrIconType.FCR_PHONECALL1,
142
+ colors: {
143
+ iconPrimary: 'var(--fcr_ui_scene_white10)'
144
+ }
145
+ }),
146
+ backgroundColor: hasMicrophoneAudioStream ? 'var(--fcr_ui_scene_ramp_lightgreen6)' : 'var(--fcr_ui_scene_btn3)'
147
+ }) : isMeeting ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_avatar.FcrAvatar, {
148
+ nickName: userName,
149
+ size: avatarSize,
150
+ textSize: avatarTextSize,
151
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
152
+ type: _type.FcrIconType.FCR_SIPDEVICE,
153
+ colors: {
154
+ iconPrimary: 'var(--fcr_ui_scene_white10)',
155
+ iconSecondary: 'var(--fcr_ui_scene_ramp_green6)'
156
+ }
157
+ }),
158
+ backgroundColor: hasMicrophoneAudioStream ? 'var(--fcr_ui_scene_ramp_purple7)' : 'var(--fcr_ui_scene_btn3)'
159
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_avatar.FcrAvatar, {
160
+ nickName: userName,
161
+ size: avatarSize,
162
+ textSize: avatarTextSize
163
+ }) : suffixedName;
164
+ }, [showAvatar, userName, isPhone, hasMicrophoneAudioStream, width, height, showAvatar, userName, videoStreamId, audioStreamId, hasMicrophoneAudioStream, hasVideoStream, isPin]);
165
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
166
+ className: (0, _classnames["default"])("fcr-member-window fcr-member-window-".concat(memberWindowPreviewType), {
167
+ 'fcr-member-window-myself': isMySelf,
168
+ 'fcr-member-window-has-audio': hasMicrophoneAudioStream
169
+ }),
170
+ "data-user-id": userId,
171
+ "data-stream-id": videoStreamId,
172
+ "data-user-name": userName,
173
+ onDoubleClick: onDoubleClick,
174
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
175
+ className: (0, _classnames["default"])('fcr-member-window-background', {
176
+ // 'fcr-member-window-is-broken': isBroken,
177
+ }),
178
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
179
+ type: _type.FcrIconType.FCR_CAMERA_WINDOW_NOTWORK,
180
+ size: 80,
181
+ colors: {
182
+ iconPrimary: 'currentColor'
183
+ }
184
+ })
185
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
186
+ className: "fcr-member-window-avatar",
187
+ children: avatar
188
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(FcrUIVideoPlayer, {
189
+ isLocal: isMySelf,
190
+ streamId: windowId,
191
+ videoStreamType: videoStreamType,
192
+ renderMode: videoRenderMode,
193
+ hasVideoStream: hasVideoStream,
194
+ hasScreenSharing: hasScreenSharing
195
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
196
+ className: (0, _classnames["default"])("fcr-member-window-excitation", {
197
+ 'fcr-member-window-excitation-show': canShowSpeakerSpotlight && isSpeakerSpotlight
198
+ })
199
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
200
+ onClick: function onClick() {
201
+ return onRemovePin(windowId);
202
+ },
203
+ className: (0, _classnames["default"])("fcr-member-window-pin", {
204
+ 'fcr-member-window-pin-show': isPin
205
+ }),
206
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
207
+ placement: "leftTop",
208
+ mouseEnterDelay: 0,
209
+ content: t('fmt_attendies_options_cancelfixed'),
210
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
211
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
212
+ type: _type.FcrIconType.FCR_PINPAGE2,
213
+ size: 26
214
+ })
215
+ })
216
+ })
217
+ }), slot]
218
+ });
219
+ });
220
+ var MicVolume = (0, _mobxReact.observer)(function (_ref2) {
221
+ var id = _ref2.id,
222
+ size = _ref2.size;
223
+ var _useContext = (0, _react.useContext)(_store.StoreContext),
224
+ userVolumeMap = _useContext.userVolumeMap;
225
+ var volume = userVolumeMap.get(id || '') || 0;
226
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
227
+ className: "fcr-user-window-actions-volume",
228
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_mic.FcrMicrophoneIndicator, {
229
+ defId: id,
230
+ size: size,
231
+ voicePercent: volume,
232
+ iconColor: "var(--fcr-volume-icon-color)"
233
+ })
234
+ });
235
+ });
236
+ var MemberWindowActions = exports.MemberWindowActions = (0, _mobxReact.observer)(function (_ref3) {
237
+ var windowData = _ref3.windowData,
238
+ iconSize = _ref3.iconSize,
239
+ windowSize = _ref3.windowSize,
240
+ openPrivateChat = _ref3.openPrivateChat,
241
+ localUserRole = _ref3.localUserRole,
242
+ sendParticipantEvent = _ref3.sendParticipantEvent,
243
+ muteAudio = _ref3.muteAudio,
244
+ hasPinnedStream = _ref3.hasPinnedStream,
245
+ allowedOperations = _ref3.allowedOperations,
246
+ _setVideoOrientation = _ref3.setVideoOrientation,
247
+ showActionBottomLabel = _ref3.showActionBottomLabel,
248
+ isShowActionAudio = _ref3.isShowActionAudio,
249
+ actionAudioTag = _ref3.actionAudioTag,
250
+ onVisibleChanged = _ref3.onVisibleChanged,
251
+ videoWindowCurrentWidth = _ref3.videoWindowCurrentWidth,
252
+ videoWindowCurrentHeight = _ref3.videoWindowCurrentHeight,
253
+ videoWindowPreviewType = _ref3.videoWindowPreviewType,
254
+ _ref3$showRotation = _ref3.showRotation,
255
+ showRotation = _ref3$showRotation === void 0 ? true : _ref3$showRotation,
256
+ interpreterUsers = _ref3.interpreterUsers,
257
+ interpreterState = _ref3.interpreterState,
258
+ handleRename = _ref3.handleRename,
259
+ renderListLength = _ref3.renderListLength;
260
+ // iconsize gallery 24 normal 16
261
+ var _ref4 = windowData || {},
262
+ videoStreamId = _ref4.videoStreamId,
263
+ audioStreamId = _ref4.audioStreamId,
264
+ hasMicrophoneAudioStream = _ref4.hasMicrophoneAudioStream,
265
+ ownerRoleType = _ref4.ownerRoleType,
266
+ userName = _ref4.userName,
267
+ isMySelf = _ref4.isMySelf,
268
+ userId = _ref4.userId,
269
+ hasVideoStream = _ref4.hasVideoStream,
270
+ hasScreenSharing = _ref4.hasScreenSharing,
271
+ isPin = _ref4.isPin,
272
+ audioStreamConnectorType = _ref4.audioStreamConnectorType,
273
+ videoStreamConnectorType = _ref4.videoStreamConnectorType,
274
+ _ref4$phoneMicEnabled = _ref4.phoneMicEnabled,
275
+ phoneMicEnabled = _ref4$phoneMicEnabled === void 0 ? false : _ref4$phoneMicEnabled;
276
+ var interpreter = (0, _react.useMemo)(function () {
277
+ return !!(interpreterUsers !== null && interpreterUsers !== void 0 && interpreterUsers.find(function (ele) {
278
+ return ele.userId === userId;
279
+ }));
280
+ }, [interpreterUsers, userId]);
281
+ var insideShow = ![_type2.FcrUserRole.COHOST, _type2.FcrUserRole.HOST].includes(ownerRoleType);
282
+ var timerRef = (0, _react.useRef)();
283
+ var t = (0, _i18n.useI18n)();
284
+ var focus = (0, _hooks.useWindowFocus)();
285
+ var _useState = (0, _react.useState)(false),
286
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
287
+ isOnlyShowVideoStream = _useState2[0],
288
+ setOnlyShowVideoStream = _useState2[1];
289
+ var _useState3 = (0, _react.useState)(false),
290
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
291
+ isShowDropMenu = _useState4[0],
292
+ setIsShowDropMenu = _useState4[1];
293
+ var connectorType = audioStreamConnectorType !== _fcrCore.FcrRoomConnectorType.NONE ? audioStreamConnectorType : videoStreamConnectorType;
294
+ var isNormal = connectorType === _fcrCore.FcrRoomConnectorType.NONE;
295
+ var isPhone = connectorType === _fcrCore.FcrRoomConnectorType.PSTN;
296
+ var isMeeting = meetingConnectorTypes.has(connectorType);
297
+ var userType = audioStreamConnectorType === _fcrCore.FcrRoomConnectorType.PSTN && !videoStreamId ? 'phone' : isMeeting ? 'meeting-system' : 'normal';
298
+ var isShowInterpreterTag = interpreter && interpreterState;
299
+ var isManager = ownerRoleType === _type2.FcrUserRole.HOST || ownerRoleType === _type2.FcrUserRole.COHOST;
300
+ var handleVideoWindowVisibleChange = function handleVideoWindowVisibleChange(width, height, setResizable) {
301
+ var videoWindowBrower = _dialogs.dialogWindows.get(_constant.FcrUIDialogKey.VIDEO_WINDOW);
302
+ if (!videoWindowBrower) return;
303
+ videoWindowBrower.setBounds({
304
+ width: width,
305
+ height: height
306
+ });
307
+ if (videoWindowPreviewType === _type4.FcrVideoWindowPreviewType.SMALL && setResizable) {
308
+ videoWindowBrower.setResizable(true);
309
+ } else {
310
+ videoWindowBrower.setResizable(false);
311
+ }
312
+ };
313
+ var onVisibleChange = function onVisibleChange(visible) {
314
+ if (visible) {
315
+ handleVideoWindowVisibleChange(900, 853, false);
316
+ setIsShowDropMenu(visible);
317
+ onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(visible);
318
+ } else {
319
+ setIsShowDropMenu(visible);
320
+ timerRef.current = setTimeout(function () {
321
+ handleVideoWindowVisibleChange(videoWindowCurrentWidth, videoWindowCurrentHeight, true);
322
+ onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(visible);
323
+ }, 100);
324
+ }
325
+ };
326
+ (0, _react.useEffect)(function () {
327
+ return function () {
328
+ clearTimeout(timerRef.current);
329
+ };
330
+ }, [videoWindowPreviewType]);
331
+ (0, _react.useEffect)(function () {
332
+ if (!isOnlyShowVideoStream && !focus) {
333
+ var timer = setTimeout(function () {
334
+ return setOnlyShowVideoStream(true);
335
+ }, HideControlsTimeout);
336
+ return function () {
337
+ return clearTimeout(timer);
338
+ };
339
+ } else if (focus && isOnlyShowVideoStream) {
340
+ setOnlyShowVideoStream(false);
341
+ }
342
+ }, [isOnlyShowVideoStream, focus]);
343
+ var suffixedName = userName;
344
+ var isMeTag = isMySelf ? t('fmt_attendies_labels_setting_mine') : '';
345
+ // 左下角图标内容
346
+ var icon = null;
347
+
348
+ // 大视窗
349
+ if (windowSize === 'large') {
350
+ // 普通麦克风接入:音量 / 红色麦克风静音
351
+ if (isNormal) {
352
+ icon = hasMicrophoneAudioStream ? /*#__PURE__*/(0, _jsxRuntime.jsx)(MicVolume, {
353
+ id: isMySelf ? '0' : videoStreamId || audioStreamId,
354
+ size: iconSize
355
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
356
+ content: t('fmt_popup_label_muted'),
357
+ mouseEnterDelay: 0,
358
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
359
+ className: "fcr-user-window-actions-microphone",
360
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
361
+ type: _type.FcrIconType.FCR_NOMUTE,
362
+ size: iconSize,
363
+ colors: {
364
+ iconPrimary: 'currentColor',
365
+ iconSecondary: 'var(--fcr_ui_scene_ramp_red6)'
366
+ }
367
+ })
368
+ })
369
+ });
370
+ }
371
+ // 不纯电话、会议系统,绿色 / 白色 (主持人) 电话,电话有帧动画
372
+ else if (isPhone && videoStreamId !== audioStreamId) {
373
+ icon = hasMicrophoneAudioStream ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
374
+ className: "fcr-user-window-actions-microphone",
375
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconPhoneCall.FcrIconPhoneCall, {
376
+ size: iconSize,
377
+ isMuted: !phoneMicEnabled,
378
+ iconColors: {
379
+ iconPrimary: ownerRoleType === _type2.FcrUserRole.HOST ? 'var(--fcr_ui_scene_white10)' : 'var(--fcr_ui_scene_ramp_lightgreen6)'
380
+ }
381
+ })
382
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
383
+ content: t('fmt_popup_label_muted'),
384
+ mouseEnterDelay: 0,
385
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
386
+ className: "fcr-user-window-actions-microphone",
387
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
388
+ type: _type.FcrIconType.FCR_PHONECALL_SILENCE,
389
+ size: iconSize,
390
+ colors: {
391
+ iconPrimary: 'var(--fcr_ui_scene_ramp_red6)'
392
+ }
393
+ })
394
+ })
395
+ });
396
+ } else if (isMeeting) {
397
+ icon = hasMicrophoneAudioStream ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
398
+ className: "fcr-user-window-actions-microphone",
399
+ style: {
400
+ backgroundColor: 'var(--fcr_ui_scene_ramp_purple7)'
401
+ },
402
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
403
+ type: _type.FcrIconType.FCR_SIPDEVICE,
404
+ size: iconSize,
405
+ colors: {
406
+ iconPrimary: 'var(--fcr_ui_scene_white10)',
407
+ iconSecondary: 'var(--fcr_ui_scene_ramp_green6)'
408
+ }
409
+ })
410
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
411
+ className: "fcr-user-window-actions-microphone",
412
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
413
+ type: _type.FcrIconType.FCR_PHONECALL_SILENCE,
414
+ size: iconSize,
415
+ colors: {
416
+ iconPrimary: 'var(--fcr_ui_scene_ramp_red6)'
417
+ }
418
+ })
419
+ });
420
+ }
421
+ }
422
+
423
+ // 小视窗
424
+ else {
425
+ // 普通麦克风接入:空 / 红色麦克风静音
426
+ if (isNormal) {
427
+ icon = hasMicrophoneAudioStream ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
428
+ content: t('fmt_popup_label_muted'),
429
+ mouseEnterDelay: 0,
430
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
431
+ className: "fcr-user-window-actions-microphone",
432
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
433
+ type: _type.FcrIconType.FCR_NOMUTE,
434
+ size: iconSize,
435
+ colors: {
436
+ iconPrimary: 'var(--fcr_ui_scene_ramp_red6)',
437
+ iconSecondary: 'var(--fcr_ui_scene_ramp_red6)'
438
+ }
439
+ })
440
+ })
441
+ });
442
+ }
443
+ // 电话接入
444
+ else if (isPhone) {
445
+ // 纯电话:绿色电话 / 红色电话静音
446
+ if (videoStreamId === audioStreamId) {
447
+ icon = hasMicrophoneAudioStream ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
448
+ className: "fcr-user-window-actions-microphone",
449
+ style: {
450
+ backgroundColor: 'var(--fcr_ui_scene_ramp_lightgreen6)'
451
+ },
452
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
453
+ type: _type.FcrIconType.FCR_PHONECALL3,
454
+ size: iconSize,
455
+ colors: {
456
+ iconPrimary: 'var(--fcr_ui_scene_white10)'
457
+ }
458
+ })
459
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
460
+ content: t('fmt_popup_label_muted'),
461
+ mouseEnterDelay: 0,
462
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
463
+ className: "fcr-user-window-actions-microphone",
464
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
465
+ type: _type.FcrIconType.FCR_PHONECALL_SILENCE,
466
+ size: iconSize,
467
+ colors: {
468
+ iconPrimary: 'var(--fcr_ui_scene_ramp_red6)'
469
+ }
470
+ })
471
+ })
472
+ });
473
+ }
474
+ // 不纯电话:空 / 红色电话静音
475
+ else {
476
+ icon = hasMicrophoneAudioStream ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
477
+ content: t('fmt_popup_label_muted'),
478
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
479
+ className: "fcr-user-window-actions-microphone",
480
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
481
+ type: _type.FcrIconType.FCR_PHONECALL_SILENCE,
482
+ size: iconSize,
483
+ colors: {
484
+ iconPrimary: 'var(--fcr_ui_scene_ramp_red6)'
485
+ }
486
+ })
487
+ })
488
+ });
489
+ }
490
+ }
491
+ // 会议系统接入:紫色会议 / 紫色会议 + 红色电话静音
492
+ else {
493
+ icon = hasMicrophoneAudioStream ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
494
+ className: "fcr-user-window-actions-microphone",
495
+ style: {
496
+ backgroundColor: 'var(--fcr_ui_scene_ramp_purple7)'
497
+ },
498
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
499
+ type: _type.FcrIconType.FCR_SIPDEVICE,
500
+ size: iconSize,
501
+ colors: {
502
+ iconPrimary: 'var(--fcr_ui_scene_white10)',
503
+ iconSecondary: 'var(--fcr_ui_scene_ramp_green6)'
504
+ }
505
+ })
506
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
507
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
508
+ className: "fcr-user-window-actions-microphone",
509
+ style: {
510
+ backgroundColor: 'var(--fcr_ui_scene_ramp_purple7)'
511
+ },
512
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
513
+ type: _type.FcrIconType.FCR_SIPDEVICE,
514
+ size: iconSize,
515
+ colors: {
516
+ iconPrimary: 'var(--fcr_ui_scene_white10)',
517
+ iconSecondary: 'var(--fcr_ui_scene_ramp_green6)'
518
+ }
519
+ })
520
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
521
+ content: t('fmt_popup_label_muted'),
522
+ mouseEnterDelay: 0,
523
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
524
+ className: "fcr-user-window-actions-microphone",
525
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
526
+ type: _type.FcrIconType.FCR_PHONECALL_SILENCE,
527
+ size: iconSize,
528
+ colors: {
529
+ iconPrimary: 'var(--fcr_ui_scene_ramp_red6)'
530
+ }
531
+ })
532
+ })
533
+ })]
534
+ });
535
+ }
536
+ }
537
+ var interpreterTagDom = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
538
+ children: t('fmt_ai_transcriptions_setting_label_translator')
539
+ });
540
+ var InterpreterTag = function InterpreterTag(props) {
541
+ var className = props.className,
542
+ _props$isShow = props.isShow,
543
+ isShow = _props$isShow === void 0 ? true : _props$isShow;
544
+ if (!isShow) {
545
+ return null;
546
+ }
547
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
548
+ className: (0, _classnames["default"])('fcr-user-window-actions-tag', 'fcr-user-window-actions-tag-host', className),
549
+ children: interpreterTagDom
550
+ });
551
+ };
552
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
553
+ className: (0, _classnames["default"])('fcr-user-window-actions', {
554
+ 'fcr-user-window-actions-hide': isOnlyShowVideoStream
555
+ }),
556
+ onContextMenu: function onContextMenu(e) {
557
+ e.preventDefault();
558
+ setIsShowDropMenu(true);
559
+ },
560
+ children: [isManager && /*#__PURE__*/(0, _jsxRuntime.jsx)(InterpreterTag, {
561
+ isShow: isShowInterpreterTag,
562
+ className: (0, _classnames["default"])('fcr-user-window-actions-bottom', 'fcr-user-window-actions-middle', {
563
+ 'fcr-user-window-actions-bottom-show': showActionBottomLabel,
564
+ 'fcr-user-window-actions-tag_large': windowSize === 'large'
565
+ })
566
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
567
+ className: (0, _classnames["default"])('fcr-user-window-actions-bottom', {
568
+ 'fcr-user-window-actions-bottom-show': showActionBottomLabel
569
+ }),
570
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
571
+ className: (0, _classnames["default"])('fcr-user-window-actions-bottom-layout'),
572
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
573
+ className: (0, _classnames["default"])('fcr-member-window-members-sharebtn', {
574
+ 'fcr-member-window-members-sharebtn-show': hasScreenSharing,
575
+ 'fcr-member-window-members-sharebtn-large': windowSize === 'large'
576
+ }),
577
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
578
+ type: _type.FcrIconType.FCR_MOBILE_SHARESCREEN,
579
+ colors: {
580
+ iconPrimary: 'var(--fcr_ui_scene_white10)'
581
+ },
582
+ size: windowSize === 'large' ? 24 : 18
583
+ })
584
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
585
+ className: "fcr-user-window-actions-bottom-layout-info",
586
+ children: [windowSize === 'large' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
587
+ className: (0, _classnames["default"])('fcr-user-window-actions-tag', {
588
+ 'fcr-user-window-actions-tag-host': isManager || isShowInterpreterTag,
589
+ 'fcr-user-window-actions-tag-cohost': ownerRoleType === _type2.FcrUserRole.COHOST
590
+ }),
591
+ children: [icon, ownerRoleType === _type2.FcrUserRole.HOST && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
592
+ children: t('fmt_role_host')
593
+ }), ownerRoleType === _type2.FcrUserRole.COHOST && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
594
+ children: t('fmt_role_cohost')
595
+ }), insideShow && isShowInterpreterTag && interpreterTagDom]
596
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
597
+ children: [isManager ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
598
+ className: (0, _classnames["default"])('fcr-user-window-actions-tag', {
599
+ 'fcr-user-window-actions-tag-host': isManager || isShowInterpreterTag,
600
+ 'fcr-user-window-actions-tag-cohost': ownerRoleType === _type2.FcrUserRole.COHOST
601
+ }),
602
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
603
+ children: t(ownerRoleType === _type2.FcrUserRole.HOST ? 'fmt_role_host' : 'fmt_role_cohost')
604
+ })
605
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(InterpreterTag, {
606
+ isShow: isShowInterpreterTag,
607
+ className: "fcr-user-window-actions-tag"
608
+ }), !hasMicrophoneAudioStream ? isMeeting ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
609
+ className: "fcr-user-window-actions-microphone",
610
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
611
+ type: _type.FcrIconType.FCR_SIPDEVICE,
612
+ size: iconSize,
613
+ colors: {
614
+ iconPrimary: 'var(--fcr_ui_scene_white10)',
615
+ iconSecondary: 'var(--fcr_ui_scene_ramp_green6)'
616
+ }
617
+ })
618
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
619
+ content: t('fmt_device_label_audio_mute'),
620
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
621
+ className: "fcr-user-window-actions-microphone",
622
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
623
+ type: _type.FcrIconType.FCR_NOMUTE,
624
+ size: iconSize,
625
+ colors: {
626
+ iconPrimary: 'var(--fcr_ui_scene_ramp_red6)',
627
+ iconSecondary: 'var(--fcr_ui_scene_ramp_red6)'
628
+ }
629
+ })
630
+ })
631
+ }) : isPhone ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
632
+ className: "fcr-user-window-actions-microphone",
633
+ style: {
634
+ backgroundColor: 'var(--fcr_ui_scene_ramp_lightgreen6)'
635
+ },
636
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
637
+ type: _type.FcrIconType.FCR_PHONECALL3,
638
+ size: iconSize,
639
+ colors: {
640
+ iconPrimary: 'var(--fcr_ui_scene_white10)'
641
+ }
642
+ })
643
+ }) : isMeeting ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
644
+ className: "fcr-user-window-actions-microphone",
645
+ style: {
646
+ backgroundColor: 'var(--fcr_ui_scene_ramp_purple7)'
647
+ },
648
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
649
+ type: _type.FcrIconType.FCR_SIPDEVICE,
650
+ size: iconSize,
651
+ colors: {
652
+ iconPrimary: 'var(--fcr_ui_scene_white10)',
653
+ iconSecondary: 'var(--fcr_ui_scene_ramp_green6)'
654
+ }
655
+ })
656
+ }) : null]
657
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
658
+ className: (0, _classnames["default"])('fcr-user-window-actions-name', {
659
+ 'ml-5': isManager || isShowInterpreterTag
660
+ }),
661
+ children: suffixedName
662
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
663
+ className: "fcr-user-window-actions-name-isme",
664
+ children: isMeTag
665
+ }), isMeTag && allowedOperations.some(function (item) {
666
+ return item === 'change_name';
667
+ }) && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
668
+ className: "fcr-user-window-actions-name-rename",
669
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
670
+ onClick: function onClick() {
671
+ return handleRename(userId);
672
+ },
673
+ type: _type.FcrIconType.FCR_RENAME,
674
+ colors: {
675
+ iconPrimary: 'var(--fcr_ui_scene_icontext1)'
676
+ }
677
+ })
678
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
679
+ className: "fcr-user-window-actions-name-doing",
680
+ children: [windowData.type === _type3.FcrUIWindowType.BOARD ? t('fmt_screenshare_whiteboard_tips_someonesharing', {
681
+ reason1: ''
682
+ }) : '', hasScreenSharing && windowData.type === _type3.FcrUIWindowType.VIDEO ? t('fmt_screenshare_status_sharing') : '']
683
+ })]
684
+ })]
685
+ }), !insideShow && !isManager && /*#__PURE__*/(0, _jsxRuntime.jsx)(InterpreterTag, {
686
+ isShow: isShowInterpreterTag,
687
+ className: "fcr-user-window-actions-bottom-interpreter-tag"
688
+ }), windowSize === 'large' && windowData.isMySelf && hasVideoStream && showRotation && renderListLength === 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_localVideoPlayer.VideoOrientation, {
689
+ setVideoOrientation: function setVideoOrientation() {
690
+ _setVideoOrientation();
691
+ }
692
+ })]
693
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
694
+ className: (0, _classnames["default"])('fcr-user-window-actions-top', {
695
+ 'fcr-user-window-actions-top-active': isShowDropMenu
696
+ }),
697
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
698
+ content: t('fmt_participants_member_button_more'),
699
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_popover.FcrPopover, {
700
+ showArrow: true,
701
+ placement: "bottomLeft",
702
+ trigger: "click",
703
+ visible: isShowDropMenu,
704
+ onVisibleChange: onVisibleChange,
705
+ overlayInnerStyle: {
706
+ border: 0,
707
+ boxShadow: '0px 0px 15px var(--fcr_web_light_dropup_m)',
708
+ borderRadius: 'var(--fcr_cornerradius_l)',
709
+ minWidth: '210px',
710
+ maxWidth: '300px',
711
+ width: 'fit-content'
712
+ },
713
+ overlayClassName: "member-window-actions__more-actions",
714
+ mouseEnterDelay: 0,
715
+ content: /*#__PURE__*/(0, _jsxRuntime.jsx)(_participantsMore.FcrParticipantsMoreActions, {
716
+ userType: userType,
717
+ hasPinnedStream: hasPinnedStream,
718
+ audioDeviceType: isPhone ? 'phone-mic' : 'computer-mic',
719
+ userId: userId,
720
+ userRole: ownerRoleType,
721
+ hasVideo: hasVideoStream,
722
+ hasAudio: hasMicrophoneAudioStream,
723
+ userName: userName,
724
+ isPin: isPin,
725
+ allowedOperations: allowedOperations,
726
+ isMe: isMySelf,
727
+ onParticipantsButtonClick: function onParticipantsButtonClick(action, userId) {
728
+ sendParticipantEvent({
729
+ action: action,
730
+ userId: userId
731
+ });
732
+ setIsShowDropMenu(false);
733
+ }
734
+ }),
735
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
736
+ className: "fcr-user-window-actions-more",
737
+ onClick: function onClick() {
738
+ return setIsShowDropMenu(true);
739
+ },
740
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
741
+ type: _type.FcrIconType.FCR_MOBILE_MORE,
742
+ size: 20,
743
+ colors: {
744
+ iconPrimary: 'currentColor'
745
+ }
746
+ })
747
+ })
748
+ })
749
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
750
+ className: "fcr-user-window-actions-mute",
751
+ disabled: !isShowActionAudio,
752
+ onClick: function onClick() {
753
+ muteAudio(hasMicrophoneAudioStream, userId);
754
+ },
755
+ children: t(actionAudioTag)
756
+ })]
757
+ })]
758
+ });
759
+ });
760
+ var MemberBoard = exports.MemberBoard = (0, _mobxReact.observer)(function (_ref5) {
761
+ var slot = _ref5.slot,
762
+ isMask = _ref5.isMask,
763
+ onMaskDoubleClick = _ref5.onMaskDoubleClick,
764
+ windowData = _ref5.windowData,
765
+ allowedOperations = _ref5.allowedOperations,
766
+ showActionBottomLabel = _ref5.showActionBottomLabel,
767
+ isShowActionAudio = _ref5.isShowActionAudio,
768
+ actionAudioTag = _ref5.actionAudioTag;
769
+ var _useContext2 = (0, _react.useContext)(_store.StoreContext),
770
+ hasPinnedStream = _useContext2.hasPinnedStream,
771
+ localUserRole = _useContext2.localUserRole,
772
+ sendParticipantEvent = _useContext2.sendParticipantEvent,
773
+ muteAudio = _useContext2.muteAudio,
774
+ hasMutePermission = _useContext2.hasMutePermission,
775
+ openPrivateChat = _useContext2.openPrivateChat,
776
+ setVideoOrientation = _useContext2.setVideoOrientation,
777
+ interpreterUsers = _useContext2.interpreterUsers,
778
+ interpreterState = _useContext2.interpreterState,
779
+ openRenameDialog = _useContext2.openRenameDialog;
780
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
781
+ className: (0, _classnames["default"])("fcr-member-board"),
782
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
783
+ onDoubleClick: onMaskDoubleClick,
784
+ className: (0, _classnames["default"])('fcr-member-board-mask', {
785
+ 'fcr-member-board-mask-show': isMask
786
+ })
787
+ }), isMask && /*#__PURE__*/(0, _jsxRuntime.jsx)(MemberWindowActions, {
788
+ isShowActionAudio: isShowActionAudio,
789
+ actionAudioTag: actionAudioTag,
790
+ showActionBottomLabel: showActionBottomLabel,
791
+ allowedOperations: allowedOperations,
792
+ setVideoOrientation: setVideoOrientation,
793
+ hasPinnedStream: hasPinnedStream,
794
+ localUserRole: localUserRole,
795
+ sendParticipantEvent: sendParticipantEvent,
796
+ muteAudio: muteAudio,
797
+ openPrivateChat: openPrivateChat,
798
+ windowSize: "large",
799
+ windowData: windowData,
800
+ iconSize: 24,
801
+ showRotation: (0, _env.isElectron)(),
802
+ interpreterUsers: interpreterUsers,
803
+ interpreterState: interpreterState,
804
+ handleRename: openRenameDialog
805
+ }), slot]
806
+ });
807
+ });
808
+ var FcrUIVideoPlayer = exports.FcrUIVideoPlayer = function FcrUIVideoPlayer(props) {
809
+ var isLocal = props.isLocal,
810
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
811
+ return isLocal ? /*#__PURE__*/(0, _jsxRuntime.jsx)(FcrUILocalVideoPlayer, {
812
+ renderMode: others.renderMode
813
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(FcrUIRemoteVideoPlayer, _objectSpread({}, others));
814
+ };
815
+ var FcrUILocalVideoPlayer = exports.FcrUILocalVideoPlayer = (0, _mobxReact.observer)(function (props) {
816
+ var renderMode = props.renderMode;
817
+ var divRef = (0, _react.useRef)(null);
818
+ var context = (0, _react.useContext)(_videoTrackRenderContext.FcrVideoTrackRenderContext);
819
+ var _ref6 = context.localVideoRenderProvider || {},
820
+ cameraEnabled = _ref6.cameraEnabled,
821
+ cameraId = _ref6.cameraId,
822
+ startCameraPreview = _ref6.startCameraPreview,
823
+ stopCameraPreview = _ref6.stopCameraPreview;
824
+ (0, _react.useEffect)(function () {
825
+ var dom = divRef.current;
826
+ if (dom) {
827
+ if (cameraEnabled) {
828
+ startCameraPreview === null || startCameraPreview === void 0 || startCameraPreview(dom, {
829
+ renderMode: renderMode,
830
+ isMirror: false
831
+ });
832
+ }
833
+ }
834
+ return function () {
835
+ dom && (stopCameraPreview === null || stopCameraPreview === void 0 ? void 0 : stopCameraPreview(dom));
836
+ };
837
+ }, [cameraEnabled, cameraId, startCameraPreview, stopCameraPreview]);
838
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
839
+ className: "fcr-member-window-body",
840
+ ref: divRef
841
+ });
842
+ });
843
+ var FcrUIRemoteVideoPlayer = exports.FcrUIRemoteVideoPlayer = (0, _mobxReact.observer)(function (_ref7) {
844
+ var _context$remoteVideoR;
845
+ var streamId = _ref7.streamId,
846
+ hasVideoStream = _ref7.hasVideoStream,
847
+ videoStreamType = _ref7.videoStreamType,
848
+ renderMode = _ref7.renderMode,
849
+ hasScreenSharing = _ref7.hasScreenSharing;
850
+ var divRef = (0, _react.useRef)(null);
851
+ var context = (0, _react.useContext)(_videoTrackRenderContext.FcrVideoTrackRenderContext);
852
+ var t = (0, _i18n.useI18n)();
853
+ var _ref8 = context.remoteVideoRenderProvider || {},
854
+ startRenderRemoteVideo = _ref8.startRenderRemoteVideo,
855
+ stopRenderRemoteVideo = _ref8.stopRenderRemoteVideo;
856
+ var isFirstRemoteVideoFrameRendered = (_context$remoteVideoR = context.remoteVideoRenderProvider) === null || _context$remoteVideoR === void 0 ? void 0 : _context$remoteVideoR.isStreamFirstFrameRendered(streamId);
857
+ (0, _react.useEffect)(function () {
858
+ var dom = divRef.current;
859
+ if (dom) {
860
+ if (hasVideoStream) {
861
+ startRenderRemoteVideo === null || startRenderRemoteVideo === void 0 || startRenderRemoteVideo(streamId, videoStreamType, {
862
+ renderMode: renderMode,
863
+ isMirror: false
864
+ }, dom);
865
+ }
866
+ }
867
+ return function () {
868
+ dom && (stopRenderRemoteVideo === null || stopRenderRemoteVideo === void 0 ? void 0 : stopRenderRemoteVideo(streamId, dom));
869
+ };
870
+ }, [hasVideoStream, streamId, videoStreamType, renderMode]);
871
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
872
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
873
+ className: (0, _classnames["default"])('fcr-member-window-body fcr-member-window-body-video-remote', {
874
+ 'fcr-member-window-body-video-remote-render': isFirstRemoteVideoFrameRendered && hasVideoStream
875
+ }),
876
+ ref: divRef
877
+ }), !isFirstRemoteVideoFrameRendered && hasVideoStream && hasScreenSharing && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
878
+ className: "fcr-member-window-body-render-video-loading",
879
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icon.FcrIcon, {
880
+ className: "render-video-loading-icon",
881
+ size: 24,
882
+ type: _type.FcrIconType.FCR_LOADING
883
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
884
+ children: [" ", t('fmt_screenshare_status_sharing'), " "]
885
+ })]
886
+ })]
887
+ });
888
+ });