mediasfu-shared 1.0.6 → 1.2.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 (558) hide show
  1. package/HEADLESS_GUIDE.md +156 -0
  2. package/README.md +130 -62
  3. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts +23 -0
  4. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts.map +1 -0
  5. package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts +22 -0
  6. package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts.map +1 -0
  7. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts +85 -0
  8. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts.map +1 -0
  9. package/dist/consumers/addVideosGrid.d.ts +10 -0
  10. package/dist/consumers/addVideosGrid.d.ts.map +1 -0
  11. package/dist/consumers/autoAdjust.d.ts +41 -0
  12. package/dist/consumers/autoAdjust.d.ts.map +1 -0
  13. package/dist/consumers/calculateRowsAndColumns.d.ts +24 -0
  14. package/dist/consumers/calculateRowsAndColumns.d.ts.map +1 -0
  15. package/dist/consumers/changeVids.d.ts +252 -0
  16. package/dist/consumers/changeVids.d.ts.map +1 -0
  17. package/dist/consumers/checkGrid.d.ts +42 -0
  18. package/dist/consumers/checkGrid.d.ts.map +1 -0
  19. package/dist/consumers/checkPermission.d.ts +42 -0
  20. package/dist/consumers/checkPermission.d.ts.map +1 -0
  21. package/dist/consumers/checkScreenShare.d.ts +59 -0
  22. package/dist/consumers/checkScreenShare.d.ts.map +1 -0
  23. package/dist/consumers/closeAndResize.d.ts +157 -0
  24. package/dist/consumers/closeAndResize.d.ts.map +1 -0
  25. package/dist/consumers/compareActiveNames.d.ts +50 -0
  26. package/dist/consumers/compareActiveNames.d.ts.map +1 -0
  27. package/dist/consumers/compareScreenStates.d.ts +55 -0
  28. package/dist/consumers/compareScreenStates.d.ts.map +1 -0
  29. package/dist/consumers/connectIps.d.ts +66 -0
  30. package/dist/consumers/connectIps.d.ts.map +1 -0
  31. package/dist/consumers/connectLocalIps.d.ts +52 -0
  32. package/dist/consumers/connectLocalIps.d.ts.map +1 -0
  33. package/dist/consumers/connectRecvTransport.d.ts +64 -0
  34. package/dist/consumers/connectRecvTransport.d.ts.map +1 -0
  35. package/dist/consumers/connectSendTransport.d.ts +75 -0
  36. package/dist/consumers/connectSendTransport.d.ts.map +1 -0
  37. package/dist/consumers/connectSendTransportAudio.d.ts +62 -0
  38. package/dist/consumers/connectSendTransportAudio.d.ts.map +1 -0
  39. package/dist/consumers/connectSendTransportScreen.d.ts +72 -0
  40. package/dist/consumers/connectSendTransportScreen.d.ts.map +1 -0
  41. package/dist/consumers/connectSendTransportVideo.d.ts +75 -0
  42. package/dist/consumers/connectSendTransportVideo.d.ts.map +1 -0
  43. package/dist/consumers/consumerResume.d.ts +16 -0
  44. package/dist/consumers/consumerResume.d.ts.map +1 -0
  45. package/dist/consumers/controlMedia.d.ts +61 -0
  46. package/dist/consumers/controlMedia.d.ts.map +1 -0
  47. package/dist/consumers/createSendTransport.d.ts +80 -0
  48. package/dist/consumers/createSendTransport.d.ts.map +1 -0
  49. package/dist/consumers/disconnectSendTransportAudio.d.ts +79 -0
  50. package/dist/consumers/disconnectSendTransportAudio.d.ts.map +1 -0
  51. package/dist/consumers/disconnectSendTransportScreen.d.ts +61 -0
  52. package/dist/consumers/disconnectSendTransportScreen.d.ts.map +1 -0
  53. package/dist/consumers/disconnectSendTransportVideo.d.ts +72 -0
  54. package/dist/consumers/disconnectSendTransportVideo.d.ts.map +1 -0
  55. package/dist/consumers/dispStreams.d.ts +189 -0
  56. package/dist/consumers/dispStreams.d.ts.map +1 -0
  57. package/dist/consumers/frameworkConsumerContract.d.ts +2 -0
  58. package/dist/consumers/frameworkConsumerContract.d.ts.map +1 -0
  59. package/dist/consumers/generatePageContent.d.ts +68 -0
  60. package/dist/consumers/generatePageContent.d.ts.map +1 -0
  61. package/dist/consumers/getEstimate.d.ts +62 -0
  62. package/dist/consumers/getEstimate.d.ts.map +1 -0
  63. package/dist/consumers/getPipedProducersAlt.d.ts +62 -0
  64. package/dist/consumers/getPipedProducersAlt.d.ts.map +1 -0
  65. package/dist/consumers/getProducersPiped.d.ts +49 -0
  66. package/dist/consumers/getProducersPiped.d.ts.map +1 -0
  67. package/dist/consumers/getVideos.d.ts +49 -0
  68. package/dist/consumers/getVideos.d.ts.map +1 -0
  69. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts +19 -0
  70. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts.map +1 -0
  71. package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts +138 -0
  72. package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts.map +1 -0
  73. package/dist/consumers/index.cjs +80 -0
  74. package/dist/consumers/index.cjs.map +1 -0
  75. package/dist/consumers/index.d.ts +62 -0
  76. package/dist/consumers/index.d.ts.map +1 -0
  77. package/dist/consumers/index.js +80 -0
  78. package/dist/consumers/index.js.map +1 -0
  79. package/dist/consumers/mixStreams.d.ts +37 -0
  80. package/dist/consumers/mixStreams.d.ts.map +1 -0
  81. package/dist/consumers/onScreenChanges.d.ts +62 -0
  82. package/dist/consumers/onScreenChanges.d.ts.map +1 -0
  83. package/dist/consumers/prepopulateUserMedia.d.ts +10 -0
  84. package/dist/consumers/prepopulateUserMedia.d.ts.map +1 -0
  85. package/dist/consumers/processConsumerTransports.d.ts +73 -0
  86. package/dist/consumers/processConsumerTransports.d.ts.map +1 -0
  87. package/dist/consumers/processConsumerTransportsAudio.d.ts +57 -0
  88. package/dist/consumers/processConsumerTransportsAudio.d.ts.map +1 -0
  89. package/dist/consumers/rePort.d.ts +63 -0
  90. package/dist/consumers/rePort.d.ts.map +1 -0
  91. package/dist/consumers/reUpdateInter.d.ts +142 -0
  92. package/dist/consumers/reUpdateInter.d.ts.map +1 -0
  93. package/dist/consumers/readjust.d.ts +68 -0
  94. package/dist/consumers/readjust.d.ts.map +1 -0
  95. package/dist/consumers/receiveAllPipedTransports.d.ts +44 -0
  96. package/dist/consumers/receiveAllPipedTransports.d.ts.map +1 -0
  97. package/dist/consumers/receiveRoomMessages.d.ts +31 -0
  98. package/dist/consumers/receiveRoomMessages.d.ts.map +1 -0
  99. package/dist/consumers/reorderStreams.d.ts +98 -0
  100. package/dist/consumers/reorderStreams.d.ts.map +1 -0
  101. package/dist/consumers/requestScreenShare.d.ts +47 -0
  102. package/dist/consumers/requestScreenShare.d.ts.map +1 -0
  103. package/dist/consumers/resumePauseAudioStreams.d.ts +85 -0
  104. package/dist/consumers/resumePauseAudioStreams.d.ts.map +1 -0
  105. package/dist/consumers/resumePauseStreams.d.ts +68 -0
  106. package/dist/consumers/resumePauseStreams.d.ts.map +1 -0
  107. package/dist/consumers/resumeSendTransportAudio.d.ts +65 -0
  108. package/dist/consumers/resumeSendTransportAudio.d.ts.map +1 -0
  109. package/dist/consumers/signalNewConsumerTransport.d.ts +59 -0
  110. package/dist/consumers/signalNewConsumerTransport.d.ts.map +1 -0
  111. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts +76 -0
  112. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts.map +1 -0
  113. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts +119 -0
  114. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts.map +1 -0
  115. package/dist/consumers/socketReceiveMethods/producerClosed.d.ts +53 -0
  116. package/dist/consumers/socketReceiveMethods/producerClosed.d.ts.map +1 -0
  117. package/dist/consumers/startShareScreen.d.ts +58 -0
  118. package/dist/consumers/startShareScreen.d.ts.map +1 -0
  119. package/dist/consumers/stopShareScreen.d.ts +127 -0
  120. package/dist/consumers/stopShareScreen.d.ts.map +1 -0
  121. package/dist/consumers/streamSuccessAudio.d.ts +149 -0
  122. package/dist/consumers/streamSuccessAudio.d.ts.map +1 -0
  123. package/dist/consumers/streamSuccessAudioSwitch.d.ts +131 -0
  124. package/dist/consumers/streamSuccessAudioSwitch.d.ts.map +1 -0
  125. package/dist/consumers/streamSuccessScreen.d.ts +109 -0
  126. package/dist/consumers/streamSuccessScreen.d.ts.map +1 -0
  127. package/dist/consumers/streamSuccessVideo.d.ts +160 -0
  128. package/dist/consumers/streamSuccessVideo.d.ts.map +1 -0
  129. package/dist/consumers/switchUserAudio.d.ts +56 -0
  130. package/dist/consumers/switchUserAudio.d.ts.map +1 -0
  131. package/dist/consumers/switchUserVideo.d.ts +77 -0
  132. package/dist/consumers/switchUserVideo.d.ts.map +1 -0
  133. package/dist/consumers/switchUserVideoAlt.d.ts +69 -0
  134. package/dist/consumers/switchUserVideoAlt.d.ts.map +1 -0
  135. package/dist/consumers/translationConsumerSwitch.d.ts +67 -0
  136. package/dist/consumers/translationConsumerSwitch.d.ts.map +1 -0
  137. package/dist/consumers/trigger.d.ts +71 -0
  138. package/dist/consumers/trigger.d.ts.map +1 -0
  139. package/dist/consumers/updateMiniCardsGrid.d.ts +65 -0
  140. package/dist/consumers/updateMiniCardsGrid.d.ts.map +1 -0
  141. package/dist/consumers/updateParticipantAudioDecibels.d.ts +31 -0
  142. package/dist/consumers/updateParticipantAudioDecibels.d.ts.map +1 -0
  143. package/dist/getParticipantMedia-B0JS6d2b.js +3555 -0
  144. package/dist/getParticipantMedia-B0JS6d2b.js.map +1 -0
  145. package/dist/getParticipantMedia-CdcYqcbD.cjs +3554 -0
  146. package/dist/getParticipantMedia-CdcYqcbD.cjs.map +1 -0
  147. package/dist/index.cjs +2727 -13252
  148. package/dist/index.cjs.map +1 -1
  149. package/dist/index.d.ts +192 -11233
  150. package/dist/index.d.ts.map +1 -0
  151. package/dist/index.js +2636 -13143
  152. package/dist/index.js.map +1 -1
  153. package/dist/index.native.cjs +352 -0
  154. package/dist/index.native.cjs.map +1 -0
  155. package/dist/index.native.d.ts +204 -0
  156. package/dist/index.native.d.ts.map +1 -0
  157. package/dist/index.native.js +352 -0
  158. package/dist/index.native.js.map +1 -0
  159. package/dist/joinLocalRoom-BdM1msQt.cjs +673 -0
  160. package/dist/joinLocalRoom-BdM1msQt.cjs.map +1 -0
  161. package/dist/joinLocalRoom-CvteNe4R.js +657 -0
  162. package/dist/joinLocalRoom-CvteNe4R.js.map +1 -0
  163. package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs +1222 -0
  164. package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs.map +1 -0
  165. package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js +1223 -0
  166. package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js.map +1 -0
  167. package/dist/methods/background/launchBackground.d.ts +10 -0
  168. package/dist/methods/background/launchBackground.d.ts.map +1 -0
  169. package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts +67 -0
  170. package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts.map +1 -0
  171. package/dist/methods/breakoutRooms/handleStartBreakout.d.ts +42 -0
  172. package/dist/methods/breakoutRooms/handleStartBreakout.d.ts.map +1 -0
  173. package/dist/methods/breakoutRooms/handleStopBreakout.d.ts +33 -0
  174. package/dist/methods/breakoutRooms/handleStopBreakout.d.ts.map +1 -0
  175. package/dist/methods/breakoutRooms/index.d.ts +5 -0
  176. package/dist/methods/breakoutRooms/index.d.ts.map +1 -0
  177. package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts +25 -0
  178. package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts.map +1 -0
  179. package/dist/methods/coHost/launchCoHost.d.ts +25 -0
  180. package/dist/methods/coHost/launchCoHost.d.ts.map +1 -0
  181. package/dist/methods/coHostMethods/index.d.ts +3 -0
  182. package/dist/methods/coHostMethods/index.d.ts.map +1 -0
  183. package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts +49 -0
  184. package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts.map +1 -0
  185. package/dist/methods/displaySettings/index.d.ts +2 -0
  186. package/dist/methods/displaySettings/index.d.ts.map +1 -0
  187. package/dist/methods/displaySettings/launchDisplaySettings.d.ts +25 -0
  188. package/dist/methods/displaySettings/launchDisplaySettings.d.ts.map +1 -0
  189. package/dist/methods/displaySettings/modifyDisplaySettings.d.ts +106 -0
  190. package/dist/methods/displaySettings/modifyDisplaySettings.d.ts.map +1 -0
  191. package/dist/methods/exit/confirmExit.d.ts +38 -0
  192. package/dist/methods/exit/confirmExit.d.ts.map +1 -0
  193. package/dist/methods/exit/index.d.ts +3 -0
  194. package/dist/methods/exit/index.d.ts.map +1 -0
  195. package/dist/methods/exit/launchConfirmExit.d.ts +23 -0
  196. package/dist/methods/exit/launchConfirmExit.d.ts.map +1 -0
  197. package/dist/methods/index.cjs +3975 -0
  198. package/dist/methods/index.cjs.map +1 -0
  199. package/dist/methods/index.d.ts +66 -0
  200. package/dist/methods/index.d.ts.map +1 -0
  201. package/dist/methods/index.js +3976 -0
  202. package/dist/methods/index.js.map +1 -0
  203. package/dist/methods/mediaSettings/launchMediaSettings.d.ts +38 -0
  204. package/dist/methods/mediaSettings/launchMediaSettings.d.ts.map +1 -0
  205. package/dist/methods/menu/launchMenuModal.d.ts +22 -0
  206. package/dist/methods/menu/launchMenuModal.d.ts.map +1 -0
  207. package/dist/methods/message/index.d.ts +2 -0
  208. package/dist/methods/message/index.d.ts.map +1 -0
  209. package/dist/methods/message/launchMessages.d.ts +24 -0
  210. package/dist/methods/message/launchMessages.d.ts.map +1 -0
  211. package/dist/methods/message/sendMessage.d.ts +63 -0
  212. package/dist/methods/message/sendMessage.d.ts.map +1 -0
  213. package/dist/methods/panelists/focusPanelists.d.ts +24 -0
  214. package/dist/methods/panelists/focusPanelists.d.ts.map +1 -0
  215. package/dist/methods/panelists/index.d.ts +4 -0
  216. package/dist/methods/panelists/index.d.ts.map +1 -0
  217. package/dist/methods/panelists/launchPanelists.d.ts +7 -0
  218. package/dist/methods/panelists/launchPanelists.d.ts.map +1 -0
  219. package/dist/methods/panelists/updatePanelists.d.ts +35 -0
  220. package/dist/methods/panelists/updatePanelists.d.ts.map +1 -0
  221. package/dist/methods/participants/index.d.ts +4 -0
  222. package/dist/methods/participants/index.d.ts.map +1 -0
  223. package/dist/methods/participants/launchParticipants.d.ts +22 -0
  224. package/dist/methods/participants/launchParticipants.d.ts.map +1 -0
  225. package/dist/methods/participants/messageParticipants.d.ts +43 -0
  226. package/dist/methods/participants/messageParticipants.d.ts.map +1 -0
  227. package/dist/methods/participants/muteParticipants.d.ts +41 -0
  228. package/dist/methods/participants/muteParticipants.d.ts.map +1 -0
  229. package/dist/methods/participants/removeParticipants.d.ts +47 -0
  230. package/dist/methods/participants/removeParticipants.d.ts.map +1 -0
  231. package/dist/methods/permissions/index.d.ts +4 -0
  232. package/dist/methods/permissions/index.d.ts.map +1 -0
  233. package/dist/methods/permissions/launchPermissions.d.ts +7 -0
  234. package/dist/methods/permissions/launchPermissions.d.ts.map +1 -0
  235. package/dist/methods/permissions/updateParticipantPermission.d.ts +25 -0
  236. package/dist/methods/permissions/updateParticipantPermission.d.ts.map +1 -0
  237. package/dist/methods/permissions/updatePermissionConfig.d.ts +22 -0
  238. package/dist/methods/permissions/updatePermissionConfig.d.ts.map +1 -0
  239. package/dist/methods/polls/handleCreatePoll.d.ts +39 -0
  240. package/dist/methods/polls/handleCreatePoll.d.ts.map +1 -0
  241. package/dist/methods/polls/handleEndPoll.d.ts +34 -0
  242. package/dist/methods/polls/handleEndPoll.d.ts.map +1 -0
  243. package/dist/methods/polls/handleVotePoll.d.ts +39 -0
  244. package/dist/methods/polls/handleVotePoll.d.ts.map +1 -0
  245. package/dist/methods/polls/index.d.ts +4 -0
  246. package/dist/methods/polls/index.d.ts.map +1 -0
  247. package/dist/methods/polls/launchPoll.d.ts +22 -0
  248. package/dist/methods/polls/launchPoll.d.ts.map +1 -0
  249. package/dist/methods/polls/pollUpdated.d.ts +38 -0
  250. package/dist/methods/polls/pollUpdated.d.ts.map +1 -0
  251. package/dist/methods/prejoin/handleCreateRoom.d.ts +77 -0
  252. package/dist/methods/prejoin/handleCreateRoom.d.ts.map +1 -0
  253. package/dist/methods/prejoin/handleJoinRoom.d.ts +56 -0
  254. package/dist/methods/prejoin/handleJoinRoom.d.ts.map +1 -0
  255. package/dist/methods/prejoin/index.d.ts +5 -0
  256. package/dist/methods/prejoin/index.d.ts.map +1 -0
  257. package/dist/methods/recording/checkPauseState.d.ts +34 -0
  258. package/dist/methods/recording/checkPauseState.d.ts.map +1 -0
  259. package/dist/methods/recording/checkResumeState.d.ts +30 -0
  260. package/dist/methods/recording/checkResumeState.d.ts.map +1 -0
  261. package/dist/methods/recording/confirmRecording.d.ts +46 -0
  262. package/dist/methods/recording/confirmRecording.d.ts.map +1 -0
  263. package/dist/methods/recording/launchRecording.d.ts +56 -0
  264. package/dist/methods/recording/launchRecording.d.ts.map +1 -0
  265. package/dist/methods/recording/recordPauseTimer.d.ts +31 -0
  266. package/dist/methods/recording/recordPauseTimer.d.ts.map +1 -0
  267. package/dist/methods/recording/recordResumeTimer.d.ts +29 -0
  268. package/dist/methods/recording/recordResumeTimer.d.ts.map +1 -0
  269. package/dist/methods/recording/recordStartTimer.d.ts +45 -0
  270. package/dist/methods/recording/recordStartTimer.d.ts.map +1 -0
  271. package/dist/methods/recording/recordUpdateTimer.d.ts +29 -0
  272. package/dist/methods/recording/recordUpdateTimer.d.ts.map +1 -0
  273. package/dist/methods/recording/startRecording.d.ts +122 -0
  274. package/dist/methods/recording/startRecording.d.ts.map +1 -0
  275. package/dist/methods/recording/stopRecording.d.ts +36 -0
  276. package/dist/methods/recording/stopRecording.d.ts.map +1 -0
  277. package/dist/methods/recording/timeLeftRecording.d.ts +13 -0
  278. package/dist/methods/recording/timeLeftRecording.d.ts.map +1 -0
  279. package/dist/methods/recording/updateRecording.d.ts +49 -0
  280. package/dist/methods/recording/updateRecording.d.ts.map +1 -0
  281. package/dist/methods/requests/hostRequestResponse.d.ts +33 -0
  282. package/dist/methods/requests/hostRequestResponse.d.ts.map +1 -0
  283. package/dist/methods/requests/index.d.ts +2 -0
  284. package/dist/methods/requests/index.d.ts.map +1 -0
  285. package/dist/methods/requests/launchRequests.d.ts +22 -0
  286. package/dist/methods/requests/launchRequests.d.ts.map +1 -0
  287. package/dist/methods/requests/respondToRequests.d.ts +38 -0
  288. package/dist/methods/requests/respondToRequests.d.ts.map +1 -0
  289. package/dist/methods/settings/index.d.ts +3 -0
  290. package/dist/methods/settings/index.d.ts.map +1 -0
  291. package/dist/methods/settings/launchSettings.d.ts +22 -0
  292. package/dist/methods/settings/launchSettings.d.ts.map +1 -0
  293. package/dist/methods/settings/modifySettings.d.ts +45 -0
  294. package/dist/methods/settings/modifySettings.d.ts.map +1 -0
  295. package/dist/methods/socketReceive/allMembers.d.ts +117 -0
  296. package/dist/methods/socketReceive/allMembers.d.ts.map +1 -0
  297. package/dist/methods/socketReceive/allMembersRest.d.ts +122 -0
  298. package/dist/methods/socketReceive/allMembersRest.d.ts.map +1 -0
  299. package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts +24 -0
  300. package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts.map +1 -0
  301. package/dist/methods/socketReceive/banParticipant.d.ts +44 -0
  302. package/dist/methods/socketReceive/banParticipant.d.ts.map +1 -0
  303. package/dist/methods/socketReceive/controlMediaHost.d.ts +62 -0
  304. package/dist/methods/socketReceive/controlMediaHost.d.ts.map +1 -0
  305. package/dist/methods/socketReceive/disconnect.d.ts +24 -0
  306. package/dist/methods/socketReceive/disconnect.d.ts.map +1 -0
  307. package/dist/methods/socketReceive/disconnectUserSelf.d.ts +29 -0
  308. package/dist/methods/socketReceive/disconnectUserSelf.d.ts.map +1 -0
  309. package/dist/methods/socketReceive/getDomains.d.ts +48 -0
  310. package/dist/methods/socketReceive/getDomains.d.ts.map +1 -0
  311. package/dist/methods/socketReceive/meetingEnded.d.ts +27 -0
  312. package/dist/methods/socketReceive/meetingEnded.d.ts.map +1 -0
  313. package/dist/methods/socketReceive/meetingStillThere.d.ts +19 -0
  314. package/dist/methods/socketReceive/meetingStillThere.d.ts.map +1 -0
  315. package/dist/methods/socketReceive/panelistReceiveMethods.d.ts +66 -0
  316. package/dist/methods/socketReceive/panelistReceiveMethods.d.ts.map +1 -0
  317. package/dist/methods/socketReceive/participantRequested.d.ts +28 -0
  318. package/dist/methods/socketReceive/participantRequested.d.ts.map +1 -0
  319. package/dist/methods/socketReceive/permissionReceiveMethods.d.ts +23 -0
  320. package/dist/methods/socketReceive/permissionReceiveMethods.d.ts.map +1 -0
  321. package/dist/methods/socketReceive/personJoined.d.ts +24 -0
  322. package/dist/methods/socketReceive/personJoined.d.ts.map +1 -0
  323. package/dist/methods/socketReceive/producerMediaClosed.d.ts +66 -0
  324. package/dist/methods/socketReceive/producerMediaClosed.d.ts.map +1 -0
  325. package/dist/methods/socketReceive/producerMediaPaused.d.ts +70 -0
  326. package/dist/methods/socketReceive/producerMediaPaused.d.ts.map +1 -0
  327. package/dist/methods/socketReceive/producerMediaResumed.d.ts +53 -0
  328. package/dist/methods/socketReceive/producerMediaResumed.d.ts.map +1 -0
  329. package/dist/methods/socketReceive/reInitiateRecording.d.ts +33 -0
  330. package/dist/methods/socketReceive/reInitiateRecording.d.ts.map +1 -0
  331. package/dist/methods/socketReceive/receiveMessage.d.ts +36 -0
  332. package/dist/methods/socketReceive/receiveMessage.d.ts.map +1 -0
  333. package/dist/methods/socketReceive/recordingNotice.d.ts +98 -0
  334. package/dist/methods/socketReceive/recordingNotice.d.ts.map +1 -0
  335. package/dist/methods/socketReceive/roomRecordParams.d.ts +60 -0
  336. package/dist/methods/socketReceive/roomRecordParams.d.ts.map +1 -0
  337. package/dist/methods/socketReceive/screenProducerId.d.ts +36 -0
  338. package/dist/methods/socketReceive/screenProducerId.d.ts.map +1 -0
  339. package/dist/methods/socketReceive/startRecords.d.ts +31 -0
  340. package/dist/methods/socketReceive/startRecords.d.ts.map +1 -0
  341. package/dist/methods/socketReceive/stoppedRecording.d.ts +24 -0
  342. package/dist/methods/socketReceive/stoppedRecording.d.ts.map +1 -0
  343. package/dist/methods/socketReceive/translationReceiveMethods.d.ts +227 -0
  344. package/dist/methods/socketReceive/translationReceiveMethods.d.ts.map +1 -0
  345. package/dist/methods/socketReceive/updateConsumingDomains.d.ts +60 -0
  346. package/dist/methods/socketReceive/updateConsumingDomains.d.ts.map +1 -0
  347. package/dist/methods/socketReceive/updateMediaSettings.d.ts +28 -0
  348. package/dist/methods/socketReceive/updateMediaSettings.d.ts.map +1 -0
  349. package/dist/methods/socketReceive/updatedCoHost.d.ts +38 -0
  350. package/dist/methods/socketReceive/updatedCoHost.d.ts.map +1 -0
  351. package/dist/methods/socketReceive/userWaiting.d.ts +30 -0
  352. package/dist/methods/socketReceive/userWaiting.d.ts.map +1 -0
  353. package/dist/methods/stream/clickAudio.d.ts +71 -0
  354. package/dist/methods/stream/clickAudio.d.ts.map +1 -0
  355. package/dist/methods/stream/clickChat.d.ts +11 -0
  356. package/dist/methods/stream/clickChat.d.ts.map +1 -0
  357. package/dist/methods/stream/clickScreenShare.d.ts +45 -0
  358. package/dist/methods/stream/clickScreenShare.d.ts.map +1 -0
  359. package/dist/methods/stream/clickVideo.d.ts +101 -0
  360. package/dist/methods/stream/clickVideo.d.ts.map +1 -0
  361. package/dist/methods/stream/index.d.ts +5 -0
  362. package/dist/methods/stream/index.d.ts.map +1 -0
  363. package/dist/methods/stream/switchAudio.d.ts +40 -0
  364. package/dist/methods/stream/switchAudio.d.ts.map +1 -0
  365. package/dist/methods/stream/switchVideo.d.ts +56 -0
  366. package/dist/methods/stream/switchVideo.d.ts.map +1 -0
  367. package/dist/methods/stream/switchVideoAlt.d.ts +55 -0
  368. package/dist/methods/stream/switchVideoAlt.d.ts.map +1 -0
  369. package/dist/methods/utils/SoundPlayer.d.ts +19 -0
  370. package/dist/methods/utils/SoundPlayer.d.ts.map +1 -0
  371. package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts +30 -0
  372. package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts.map +1 -0
  373. package/dist/methods/utils/createResponseJoinRoom.d.ts +24 -0
  374. package/dist/methods/utils/createResponseJoinRoom.d.ts.map +1 -0
  375. package/dist/methods/utils/createRoomOnMediaSFU.d.ts +28 -0
  376. package/dist/methods/utils/createRoomOnMediaSFU.d.ts.map +1 -0
  377. package/dist/methods/utils/formatNumber.d.ts +21 -0
  378. package/dist/methods/utils/formatNumber.d.ts.map +1 -0
  379. package/dist/methods/utils/generateRandomMessages.d.ts +11 -0
  380. package/dist/methods/utils/generateRandomMessages.d.ts.map +1 -0
  381. package/dist/methods/utils/generateRandomParticipants.d.ts +10 -0
  382. package/dist/methods/utils/generateRandomParticipants.d.ts.map +1 -0
  383. package/dist/methods/utils/generateRandomPolls.d.ts +7 -0
  384. package/dist/methods/utils/generateRandomPolls.d.ts.map +1 -0
  385. package/dist/methods/utils/generateRandomRequestList.d.ts +10 -0
  386. package/dist/methods/utils/generateRandomRequestList.d.ts.map +1 -0
  387. package/dist/methods/utils/generateRandomWaitingRoomList.d.ts +4 -0
  388. package/dist/methods/utils/generateRandomWaitingRoomList.d.ts.map +1 -0
  389. package/dist/methods/utils/getModalPosition.d.ts +7 -0
  390. package/dist/methods/utils/getModalPosition.d.ts.map +1 -0
  391. package/dist/methods/utils/getOverlayPosition.d.ts +22 -0
  392. package/dist/methods/utils/getOverlayPosition.d.ts.map +1 -0
  393. package/dist/methods/utils/getParticipantMedia.d.ts +55 -0
  394. package/dist/methods/utils/getParticipantMedia.d.ts.map +1 -0
  395. package/dist/methods/utils/headless/getCurrentParams.d.ts +27 -0
  396. package/dist/methods/utils/headless/getCurrentParams.d.ts.map +1 -0
  397. package/dist/methods/utils/headless/getMediaStreams.d.ts +96 -0
  398. package/dist/methods/utils/headless/getMediaStreams.d.ts.map +1 -0
  399. package/dist/methods/utils/headless/getRoomReadiness.d.ts +25 -0
  400. package/dist/methods/utils/headless/getRoomReadiness.d.ts.map +1 -0
  401. package/dist/methods/utils/headless/headlessTypes.d.ts +89 -0
  402. package/dist/methods/utils/headless/headlessTypes.d.ts.map +1 -0
  403. package/dist/methods/utils/headless/index.d.ts +29 -0
  404. package/dist/methods/utils/headless/index.d.ts.map +1 -0
  405. package/dist/methods/utils/headless/mediaPermissions.d.ts +53 -0
  406. package/dist/methods/utils/headless/mediaPermissions.d.ts.map +1 -0
  407. package/dist/methods/utils/headless/mediaProduction.d.ts +177 -0
  408. package/dist/methods/utils/headless/mediaProduction.d.ts.map +1 -0
  409. package/dist/methods/utils/headless/moderation.d.ts +157 -0
  410. package/dist/methods/utils/headless/moderation.d.ts.map +1 -0
  411. package/dist/methods/utils/headless/participantState.d.ts +128 -0
  412. package/dist/methods/utils/headless/participantState.d.ts.map +1 -0
  413. package/dist/methods/utils/headless/playback.d.ts +106 -0
  414. package/dist/methods/utils/headless/playback.d.ts.map +1 -0
  415. package/dist/methods/utils/headless/roomActions.d.ts +88 -0
  416. package/dist/methods/utils/headless/roomActions.d.ts.map +1 -0
  417. package/dist/methods/utils/headless/sessionControls.d.ts +159 -0
  418. package/dist/methods/utils/headless/sessionControls.d.ts.map +1 -0
  419. package/dist/methods/utils/headless/sessionExtras.d.ts +291 -0
  420. package/dist/methods/utils/headless/sessionExtras.d.ts.map +1 -0
  421. package/dist/methods/utils/headless/sessionFeatures.d.ts +159 -0
  422. package/dist/methods/utils/headless/sessionFeatures.d.ts.map +1 -0
  423. package/dist/methods/utils/headless/viewerSession.d.ts +125 -0
  424. package/dist/methods/utils/headless/viewerSession.d.ts.map +1 -0
  425. package/dist/methods/utils/headless/virtualBackground.d.ts +72 -0
  426. package/dist/methods/utils/headless/virtualBackground.d.ts.map +1 -0
  427. package/dist/methods/utils/initialValuesState.d.ts +388 -0
  428. package/dist/methods/utils/initialValuesState.d.ts.map +1 -0
  429. package/dist/methods/utils/joinRoomOnMediaSFU.d.ts +56 -0
  430. package/dist/methods/utils/joinRoomOnMediaSFU.d.ts.map +1 -0
  431. package/dist/methods/utils/liveSubtitle.d.ts +36 -0
  432. package/dist/methods/utils/liveSubtitle.d.ts.map +1 -0
  433. package/dist/methods/utils/meetingTimeRemaining.d.ts +15 -0
  434. package/dist/methods/utils/meetingTimeRemaining.d.ts.map +1 -0
  435. package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts +35 -0
  436. package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts.map +1 -0
  437. package/dist/methods/utils/producer/aParams.d.ts +3 -0
  438. package/dist/methods/utils/producer/aParams.d.ts.map +1 -0
  439. package/dist/methods/utils/producer/hParams.d.ts +3 -0
  440. package/dist/methods/utils/producer/hParams.d.ts.map +1 -0
  441. package/dist/methods/utils/producer/screenParams.d.ts +3 -0
  442. package/dist/methods/utils/producer/screenParams.d.ts.map +1 -0
  443. package/dist/methods/utils/producer/vParams.d.ts +3 -0
  444. package/dist/methods/utils/producer/vParams.d.ts.map +1 -0
  445. package/dist/methods/utils/producer/videoCaptureConstraints.d.ts +145 -0
  446. package/dist/methods/utils/producer/videoCaptureConstraints.d.ts.map +1 -0
  447. package/dist/methods/utils/resolveMediaSFURoomApi.d.ts +4 -0
  448. package/dist/methods/utils/resolveMediaSFURoomApi.d.ts.map +1 -0
  449. package/dist/methods/utils/sleep.d.ts +21 -0
  450. package/dist/methods/utils/sleep.d.ts.map +1 -0
  451. package/dist/methods/utils/translationLanguages.d.ts +100 -0
  452. package/dist/methods/utils/translationLanguages.d.ts.map +1 -0
  453. package/dist/methods/utils/validateAlphanumeric.d.ts +21 -0
  454. package/dist/methods/utils/validateAlphanumeric.d.ts.map +1 -0
  455. package/dist/methods/utils/virtualBackgroundCompositor.d.ts +21 -0
  456. package/dist/methods/utils/virtualBackgroundCompositor.d.ts.map +1 -0
  457. package/dist/methods/utils/webrtc.d.ts +18 -0
  458. package/dist/methods/utils/webrtc.d.ts.map +1 -0
  459. package/dist/methods/waiting/index.d.ts +2 -0
  460. package/dist/methods/waiting/index.d.ts.map +1 -0
  461. package/dist/methods/waiting/launchWaiting.d.ts +23 -0
  462. package/dist/methods/waiting/launchWaiting.d.ts.map +1 -0
  463. package/dist/methods/waiting/respondToWaiting.d.ts +40 -0
  464. package/dist/methods/waiting/respondToWaiting.d.ts.map +1 -0
  465. package/dist/methods/welcome/handleWelcomeRequest.d.ts +47 -0
  466. package/dist/methods/welcome/handleWelcomeRequest.d.ts.map +1 -0
  467. package/dist/methods/welcome/index.d.ts +3 -0
  468. package/dist/methods/welcome/index.d.ts.map +1 -0
  469. package/dist/methods/whiteboard/captureCanvasStream.d.ts +38 -0
  470. package/dist/methods/whiteboard/captureCanvasStream.d.ts.map +1 -0
  471. package/dist/methods/whiteboard/handleStartWhiteboard.d.ts +31 -0
  472. package/dist/methods/whiteboard/handleStartWhiteboard.d.ts.map +1 -0
  473. package/dist/methods/whiteboard/handleStopWhiteboard.d.ts +25 -0
  474. package/dist/methods/whiteboard/handleStopWhiteboard.d.ts.map +1 -0
  475. package/dist/methods/whiteboard/index.d.ts +5 -0
  476. package/dist/methods/whiteboard/index.d.ts.map +1 -0
  477. package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts +23 -0
  478. package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts.map +1 -0
  479. package/dist/producers/producerEmits/joinConRoom.d.ts +54 -0
  480. package/dist/producers/producerEmits/joinConRoom.d.ts.map +1 -0
  481. package/dist/producers/producerEmits/joinLocalRoom.d.ts +30 -0
  482. package/dist/producers/producerEmits/joinLocalRoom.d.ts.map +1 -0
  483. package/dist/producers/producerEmits/joinRoom.d.ts +35 -0
  484. package/dist/producers/producerEmits/joinRoom.d.ts.map +1 -0
  485. package/dist/readme/mediasfu-platform-capabilities.webp +0 -0
  486. package/dist/sockets/SocketManager.d.ts +102 -0
  487. package/dist/sockets/SocketManager.d.ts.map +1 -0
  488. package/dist/translationConsumerSwitch-C20MfNNq.cjs +509 -0
  489. package/dist/translationConsumerSwitch-C20MfNNq.cjs.map +1 -0
  490. package/dist/translationConsumerSwitch-zKuS5wgH.js +510 -0
  491. package/dist/translationConsumerSwitch-zKuS5wgH.js.map +1 -0
  492. package/dist/types/index.cjs +85 -0
  493. package/dist/types/index.cjs.map +1 -0
  494. package/dist/types/index.d.ts +2 -0
  495. package/dist/types/index.d.ts.map +1 -0
  496. package/dist/types/index.js +85 -0
  497. package/dist/types/index.js.map +1 -0
  498. package/dist/types/shared-base-types.d.ts +656 -0
  499. package/dist/types/shared-base-types.d.ts.map +1 -0
  500. package/dist/types/types.d.ts +124 -0
  501. package/dist/types/types.d.ts.map +1 -0
  502. package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js +5392 -0
  503. package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js.map +1 -0
  504. package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs +5391 -0
  505. package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs.map +1 -0
  506. package/dist/validateAlphanumeric-DKn5BsUP.cjs +15 -0
  507. package/dist/validateAlphanumeric-DKn5BsUP.cjs.map +1 -0
  508. package/dist/validateAlphanumeric-Dk1JB80W.js +16 -0
  509. package/dist/validateAlphanumeric-Dk1JB80W.js.map +1 -0
  510. package/package.json +106 -99
  511. package/src/ProducerClient/producerClientEmits/createDeviceClient.ts +1 -2
  512. package/src/ProducerClient/producerClientEmits/updateRoomParametersClient.ts +1 -1
  513. package/src/consumers/connectIps.ts +1 -1
  514. package/src/consumers/connectRecvTransport.ts +1 -1
  515. package/src/consumers/connectSendTransport.ts +1 -1
  516. package/src/consumers/connectSendTransportAudio.ts +1 -1
  517. package/src/consumers/connectSendTransportScreen.ts +5 -2
  518. package/src/consumers/connectSendTransportVideo.ts +1 -1
  519. package/src/consumers/createSendTransport.ts +34 -29
  520. package/src/consumers/disconnectSendTransportAudio.ts +1 -1
  521. package/src/consumers/disconnectSendTransportScreen.ts +1 -1
  522. package/src/consumers/disconnectSendTransportVideo.ts +1 -1
  523. package/src/consumers/index.ts +61 -0
  524. package/src/consumers/resumeSendTransportAudio.ts +1 -1
  525. package/src/consumers/signalNewConsumerTransport.ts +1 -2
  526. package/src/consumers/socketReceiveMethods/joinConsumeRoom.ts +1 -1
  527. package/src/consumers/socketReceiveMethods/newPipeProducer.ts +1 -1
  528. package/src/consumers/streamSuccessAudio.ts +1 -2
  529. package/src/consumers/streamSuccessAudioSwitch.ts +1 -2
  530. package/src/consumers/streamSuccessVideo.ts +35 -6
  531. package/src/index.native.ts +24 -1
  532. package/src/index.ts +7 -0
  533. package/src/methods/exit/confirmExit.ts +11 -4
  534. package/src/methods/socketReceive/getDomains.ts +1 -1
  535. package/src/methods/utils/getParticipantMedia.ts +112 -0
  536. package/src/methods/utils/headless/getCurrentParams.ts +44 -0
  537. package/src/methods/utils/headless/getMediaStreams.ts +256 -0
  538. package/src/methods/utils/headless/getRoomReadiness.ts +49 -0
  539. package/src/methods/utils/headless/headlessTypes.ts +102 -0
  540. package/src/methods/utils/headless/index.ts +28 -0
  541. package/src/methods/utils/headless/mediaPermissions.ts +124 -0
  542. package/src/methods/utils/headless/mediaProduction.ts +505 -0
  543. package/src/methods/utils/headless/moderation.ts +455 -0
  544. package/src/methods/utils/headless/participantState.ts +254 -0
  545. package/src/methods/utils/headless/playback.ts +336 -0
  546. package/src/methods/utils/headless/roomActions.ts +230 -0
  547. package/src/methods/utils/headless/sessionControls.ts +335 -0
  548. package/src/methods/utils/headless/sessionExtras.ts +593 -0
  549. package/src/methods/utils/headless/sessionFeatures.ts +480 -0
  550. package/src/methods/utils/headless/viewerSession.ts +246 -0
  551. package/src/methods/utils/headless/virtualBackground.ts +280 -0
  552. package/src/methods/utils/resolveMediaSFURoomApi.ts +2 -2
  553. package/src/methods/utils/virtualBackgroundCompositor.ts +53 -0
  554. package/src/methods/whiteboard/captureCanvasStream.ts +2 -2
  555. package/src/producers/producerEmits/joinConRoom.ts +1 -1
  556. package/src/producers/producerEmits/joinRoom.ts +1 -1
  557. package/src/types/index.ts +1 -0
  558. package/src/types/shared-base-types.ts +2 -3
@@ -0,0 +1,509 @@
1
+ "use strict";
2
+ function buildAddVideosGridPlan({
3
+ mainGridStreams,
4
+ altGridStreams,
5
+ numToAdd
6
+ }) {
7
+ const safeMain = Array.isArray(mainGridStreams) ? mainGridStreams : [];
8
+ const safeAlt = Array.isArray(altGridStreams) ? altGridStreams : [];
9
+ const bounded = Math.max(0, Math.min(numToAdd ?? safeMain.length, safeMain.length));
10
+ const mainEntries = safeMain.slice(0, bounded).map((stream, index) => ({
11
+ stream,
12
+ index
13
+ }));
14
+ const altEntries = safeAlt.map((stream, index) => ({
15
+ stream,
16
+ index
17
+ }));
18
+ return { mainEntries, altEntries };
19
+ }
20
+ function resolveMainHostRenderMode({
21
+ islevel,
22
+ localUIMode,
23
+ videoAlreadyOn,
24
+ audioAlreadyOn,
25
+ hostVideoOn,
26
+ hostMuted
27
+ }) {
28
+ const hostVideoOffPath = islevel !== "2" && !hostVideoOn || islevel === "2" && (!hostVideoOn || !videoAlreadyOn) || localUIMode === true;
29
+ if (!hostVideoOffPath) {
30
+ return "video";
31
+ }
32
+ if (islevel === "2" && videoAlreadyOn) {
33
+ return "adminVideo";
34
+ }
35
+ const audOn = islevel === "2" && audioAlreadyOn || islevel !== "2" && hostMuted === false;
36
+ return audOn ? "audio" : "mini";
37
+ }
38
+ function resolveHostVideoStream({
39
+ islevel,
40
+ keepBackground,
41
+ virtualStream,
42
+ localStreamVideo,
43
+ oldAllStreams,
44
+ hostVideoID
45
+ }) {
46
+ if (islevel === "2") {
47
+ return keepBackground && virtualStream ? virtualStream : localStreamVideo;
48
+ }
49
+ const safeOldStreams = Array.isArray(oldAllStreams) ? oldAllStreams : [];
50
+ const matched = safeOldStreams.find((stream) => stream.producerId === hostVideoID);
51
+ return matched?.stream ?? null;
52
+ }
53
+ function buildMainScreenState({
54
+ filled,
55
+ adminOnMainScreen,
56
+ mainScreenPerson
57
+ }) {
58
+ return {
59
+ filled,
60
+ adminOnMainScreen,
61
+ mainScreenPerson
62
+ };
63
+ }
64
+ function buildMainHostCardPlan({
65
+ islevel,
66
+ localUIMode,
67
+ videoAlreadyOn,
68
+ audioAlreadyOn,
69
+ hostVideoOn,
70
+ hostMuted,
71
+ hostIsAdmin,
72
+ hostName,
73
+ hostVideoID,
74
+ fallbackName,
75
+ member,
76
+ keepBackground,
77
+ virtualStream,
78
+ localStreamVideo,
79
+ oldAllStreams
80
+ }) {
81
+ const mode = resolveMainHostRenderMode({
82
+ islevel,
83
+ localUIMode,
84
+ videoAlreadyOn,
85
+ audioAlreadyOn,
86
+ hostVideoOn,
87
+ hostMuted
88
+ });
89
+ if (mode === "adminVideo") {
90
+ return {
91
+ kind: "video",
92
+ key: hostVideoID || hostName || "host-video",
93
+ name: hostName,
94
+ remoteProducerId: hostVideoID || "",
95
+ videoStream: keepBackground && virtualStream ? virtualStream : localStreamVideo,
96
+ doMirror: true,
97
+ state: buildMainScreenState({
98
+ filled: true,
99
+ adminOnMainScreen: true,
100
+ mainScreenPerson: hostName
101
+ })
102
+ };
103
+ }
104
+ if (mode === "audio") {
105
+ return {
106
+ kind: "audio",
107
+ key: hostName || fallbackName,
108
+ name: hostName,
109
+ state: buildMainScreenState({
110
+ filled: true,
111
+ adminOnMainScreen: islevel === "2",
112
+ mainScreenPerson: hostName
113
+ })
114
+ };
115
+ }
116
+ if (mode === "mini") {
117
+ return {
118
+ kind: "mini",
119
+ key: fallbackName,
120
+ name: hostName,
121
+ initials: fallbackName,
122
+ state: buildMainScreenState({
123
+ filled: false,
124
+ adminOnMainScreen: islevel === "2",
125
+ mainScreenPerson: hostName
126
+ })
127
+ };
128
+ }
129
+ const hostStream = resolveHostVideoStream({
130
+ islevel,
131
+ keepBackground,
132
+ virtualStream,
133
+ localStreamVideo,
134
+ oldAllStreams,
135
+ hostVideoID
136
+ });
137
+ if (!hostStream) {
138
+ return {
139
+ kind: "mini",
140
+ key: fallbackName,
141
+ name: hostName,
142
+ initials: fallbackName,
143
+ state: buildMainScreenState({
144
+ filled: false,
145
+ adminOnMainScreen: islevel === "2",
146
+ mainScreenPerson: hostName
147
+ })
148
+ };
149
+ }
150
+ return {
151
+ kind: "video",
152
+ key: hostVideoID || hostName || "host-video",
153
+ name: hostName,
154
+ remoteProducerId: hostVideoID || "",
155
+ videoStream: hostStream,
156
+ doMirror: member === hostName,
157
+ state: buildMainScreenState({
158
+ filled: true,
159
+ adminOnMainScreen: hostIsAdmin,
160
+ mainScreenPerson: hostName
161
+ })
162
+ };
163
+ }
164
+ function buildScreenShareHostCardPlan({
165
+ hostName,
166
+ hostScreenID,
167
+ hostIsAdmin,
168
+ shared,
169
+ hostStream,
170
+ screenForceFullDisplay,
171
+ annotateScreenStream
172
+ }) {
173
+ return {
174
+ key: hostScreenID || hostName || "host-screen",
175
+ name: hostName,
176
+ remoteProducerId: hostScreenID || "",
177
+ videoStream: shared ? hostStream : hostStream?.stream ?? null,
178
+ forceFullDisplay: annotateScreenStream && shared ? false : screenForceFullDisplay,
179
+ doMirror: false,
180
+ state: buildMainScreenState({
181
+ filled: true,
182
+ adminOnMainScreen: hostIsAdmin,
183
+ mainScreenPerson: hostName
184
+ })
185
+ };
186
+ }
187
+ function buildPrepopulateUserMediaPlan({
188
+ participants,
189
+ allVideoStreams,
190
+ member,
191
+ shared,
192
+ shareScreenStarted,
193
+ eventType,
194
+ screenId,
195
+ whiteboardStarted,
196
+ whiteboardEnded,
197
+ remoteScreenStream,
198
+ localStreamScreen,
199
+ checkOrientation,
200
+ isWideScreen,
201
+ forceFullDisplay,
202
+ includeWhiteboardAsScreenFlow = false
203
+ }) {
204
+ const safeParticipants = Array.isArray(participants) ? participants : [];
205
+ const safeVideoStreams = Array.isArray(allVideoStreams) ? allVideoStreams : [];
206
+ const safeRemoteScreenStreams = Array.isArray(remoteScreenStream) ? remoteScreenStream : [];
207
+ const whiteboardActive = whiteboardStarted && !whiteboardEnded;
208
+ const screenFlowActive = shareScreenStarted || shared || includeWhiteboardAsScreenFlow && whiteboardActive;
209
+ let screenForceFullDisplay = forceFullDisplay;
210
+ const orientation = checkOrientation();
211
+ if ((orientation === "portrait" || !isWideScreen) && (shareScreenStarted || shared)) {
212
+ screenForceFullDisplay = false;
213
+ }
214
+ if (!screenFlowActive) {
215
+ if (eventType === "conference") {
216
+ return {
217
+ screenFlowActive,
218
+ shouldReturnEarly: true,
219
+ shouldUpdateAdminOnMainScreen: false,
220
+ screenForceFullDisplay,
221
+ host: null,
222
+ hostStream: null,
223
+ adminOnMainScreen: false,
224
+ mainScreenPerson: ""
225
+ };
226
+ }
227
+ const host2 = safeParticipants.find((participant) => participant.islevel === "2") ?? null;
228
+ return {
229
+ screenFlowActive,
230
+ shouldReturnEarly: false,
231
+ shouldUpdateAdminOnMainScreen: false,
232
+ screenForceFullDisplay,
233
+ host: host2,
234
+ hostStream: null,
235
+ adminOnMainScreen: false,
236
+ mainScreenPerson: host2?.name ?? ""
237
+ };
238
+ }
239
+ let host = null;
240
+ let hostStream = null;
241
+ if (shared) {
242
+ host = { name: member, audioID: "", videoID: "" };
243
+ hostStream = localStreamScreen;
244
+ } else {
245
+ host = safeParticipants.find(
246
+ (participant) => participant.ScreenID === screenId && participant.ScreenOn === true
247
+ ) ?? null;
248
+ if (whiteboardActive) {
249
+ host = {
250
+ name: "WhiteboardActive",
251
+ islevel: "2",
252
+ audioID: "",
253
+ videoID: ""
254
+ };
255
+ hostStream = { producerId: "WhiteboardActive" };
256
+ }
257
+ if (host === null) {
258
+ host = safeParticipants.find((participant) => participant.ScreenOn === true) ?? null;
259
+ }
260
+ if (host && !String(host.name ?? "").includes("WhiteboardActive")) {
261
+ if (safeRemoteScreenStreams.length === 0) {
262
+ hostStream = safeVideoStreams.find((stream) => stream.producerId === host?.ScreenID) ?? null;
263
+ } else {
264
+ hostStream = safeRemoteScreenStreams[0];
265
+ }
266
+ }
267
+ }
268
+ return {
269
+ screenFlowActive,
270
+ shouldReturnEarly: false,
271
+ shouldUpdateAdminOnMainScreen: true,
272
+ screenForceFullDisplay,
273
+ host,
274
+ hostStream,
275
+ adminOnMainScreen: (host && host.islevel === "2") ?? false,
276
+ mainScreenPerson: host?.name ?? ""
277
+ };
278
+ }
279
+ const isSpeakerInMyBreakoutRoom = (speakerName, parameters) => {
280
+ const {
281
+ breakOutRoomStarted = false,
282
+ breakOutRoomEnded = false,
283
+ limitedBreakRoom = [],
284
+ participants = [],
285
+ islevel = "1",
286
+ eventType = "conference",
287
+ hostNewRoom = -1,
288
+ breakoutRooms = [],
289
+ member = ""
290
+ } = parameters;
291
+ if (!breakOutRoomStarted || breakOutRoomEnded) {
292
+ return true;
293
+ }
294
+ const host = participants.find((p) => p.islevel === "2");
295
+ const speakerIsHost = host?.name === speakerName;
296
+ if (islevel !== "2") {
297
+ if (eventType === "webinar" && speakerIsHost) {
298
+ return true;
299
+ }
300
+ if (eventType === "conference" && speakerIsHost) {
301
+ const roomMember = breakoutRooms.find(
302
+ (r) => r.find((p) => p.name === member)
303
+ );
304
+ const memberBreakRoom = roomMember ? breakoutRooms.indexOf(roomMember) : -1;
305
+ const inBreakRoom = memberBreakRoom !== -1;
306
+ if (inBreakRoom) {
307
+ return memberBreakRoom === hostNewRoom;
308
+ }
309
+ if (hostNewRoom === -1) {
310
+ return true;
311
+ }
312
+ return hostNewRoom === memberBreakRoom && memberBreakRoom !== -1;
313
+ }
314
+ }
315
+ return limitedBreakRoom.some((p) => p.name === speakerName);
316
+ };
317
+ const pauseOriginalProducer = async ({
318
+ originalProducerId,
319
+ speakerId,
320
+ parameters
321
+ }) => {
322
+ try {
323
+ const { consumerTransports } = parameters;
324
+ if (speakerId && !isSpeakerInMyBreakoutRoom(speakerId, parameters)) {
325
+ return;
326
+ }
327
+ const transport = consumerTransports.find(
328
+ (t) => t.producerId === originalProducerId && t.consumer?.kind === "audio"
329
+ );
330
+ if (!transport?.consumer) {
331
+ return;
332
+ }
333
+ if (transport.consumer.track) {
334
+ transport.consumer.track.enabled = false;
335
+ }
336
+ if (transport.consumer.paused) {
337
+ return;
338
+ }
339
+ transport.consumer.pause();
340
+ transport.socket_?.emit(
341
+ "consumer-pause",
342
+ { serverConsumerId: transport.serverConsumerTransportId },
343
+ async () => {
344
+ }
345
+ );
346
+ } catch (error) {
347
+ console.error("[TranslationSwitch] Error pausing original producer:", error);
348
+ }
349
+ };
350
+ const resumeOriginalProducer = async ({
351
+ originalProducerId,
352
+ speakerId,
353
+ parameters
354
+ }) => {
355
+ try {
356
+ const { consumerTransports } = parameters;
357
+ if (speakerId && !isSpeakerInMyBreakoutRoom(speakerId, parameters)) {
358
+ return;
359
+ }
360
+ const transport = consumerTransports.find(
361
+ (t) => t.producerId === originalProducerId && t.consumer?.kind === "audio"
362
+ );
363
+ if (!transport?.consumer) {
364
+ return;
365
+ }
366
+ if (!transport.consumer.paused) {
367
+ if (transport.consumer.track) {
368
+ transport.consumer.track.enabled = true;
369
+ }
370
+ return;
371
+ }
372
+ transport.socket_?.emit(
373
+ "consumer-resume",
374
+ { serverConsumerId: transport.serverConsumerTransportId },
375
+ async ({ resumed }) => {
376
+ if (resumed) {
377
+ if (transport.consumer.track) {
378
+ transport.consumer.track.enabled = true;
379
+ }
380
+ transport.consumer.resume();
381
+ }
382
+ }
383
+ );
384
+ } catch (error) {
385
+ console.error("[TranslationSwitch] Error resuming original producer:", error);
386
+ }
387
+ };
388
+ const isConsumingTranslationForSpeaker = (speakerId, consumerTransports, translationProducerMap) => {
389
+ const translationInfo = translationProducerMap.get(speakerId);
390
+ if (translationInfo) {
391
+ const hasConsumer = consumerTransports.some(
392
+ (t) => t.producerId === translationInfo.translationProducerId
393
+ );
394
+ if (hasConsumer) {
395
+ return {
396
+ consuming: true,
397
+ language: translationInfo.language,
398
+ translationProducerId: translationInfo.translationProducerId,
399
+ originalProducerId: translationInfo.originalProducerId
400
+ };
401
+ }
402
+ }
403
+ return { consuming: false };
404
+ };
405
+ const getActiveTranslationConsumers = (translationProducerMap, consumerTransports) => {
406
+ const results = [];
407
+ translationProducerMap.forEach((info, speakerId) => {
408
+ const hasConsumer = consumerTransports.some(
409
+ (t) => t.producerId === info.translationProducerId
410
+ );
411
+ if (hasConsumer) {
412
+ results.push({
413
+ speakerId,
414
+ ...info
415
+ });
416
+ }
417
+ });
418
+ return results;
419
+ };
420
+ const findOriginalProducerForSpeaker = (speakerId, allAudioStreams) => {
421
+ const stream = allAudioStreams.find(
422
+ (s) => s.name === speakerId || s.producerId?.includes(speakerId)
423
+ );
424
+ return stream?.producerId || null;
425
+ };
426
+ const stopConsumingTranslation = async (options) => {
427
+ const { language, translationProducerMap, parameters } = options;
428
+ try {
429
+ const { consumerTransports, updateConsumerTransports } = parameters;
430
+ let originalProducerId = null;
431
+ let translationProducerId = null;
432
+ for (const [origId, langMap] of Object.entries(translationProducerMap)) {
433
+ if (langMap && langMap[language]) {
434
+ translationProducerId = langMap[language];
435
+ originalProducerId = origId;
436
+ break;
437
+ }
438
+ }
439
+ if (!translationProducerId) {
440
+ return originalProducerId;
441
+ }
442
+ const transportIndex = consumerTransports.findIndex(
443
+ (t) => t.producerId === translationProducerId
444
+ );
445
+ if (transportIndex === -1) {
446
+ return originalProducerId;
447
+ }
448
+ const transport = consumerTransports[transportIndex];
449
+ if (transport.socket_ && transport.consumer) {
450
+ transport.socket_.emit(
451
+ "consumer-close",
452
+ { serverConsumerId: transport.serverConsumerTransportId },
453
+ () => {
454
+ }
455
+ );
456
+ }
457
+ if (transport.consumer) {
458
+ transport.consumer.close();
459
+ }
460
+ const updatedTransports = consumerTransports.filter((_, i) => i !== transportIndex);
461
+ updateConsumerTransports(updatedTransports);
462
+ return originalProducerId;
463
+ } catch (error) {
464
+ console.error("[TranslationSwitch] Error stopping translation consumer:", error);
465
+ return null;
466
+ }
467
+ };
468
+ const syncTranslationStateAfterBreakoutChange = async (translationProducerMap, speakerIdByProducerId, parameters) => {
469
+ try {
470
+ const { consumerTransports } = parameters;
471
+ for (const [originalProducerId, langMap] of Object.entries(translationProducerMap)) {
472
+ const speakerId = speakerIdByProducerId[originalProducerId];
473
+ if (!speakerId) continue;
474
+ const inMyRoom = isSpeakerInMyBreakoutRoom(speakerId, parameters);
475
+ const hasTranslation = Object.keys(langMap).length > 0;
476
+ const originalConsumer = consumerTransports.find(
477
+ (t) => t.producerId === originalProducerId && t.consumer?.kind === "audio"
478
+ );
479
+ if (!originalConsumer) continue;
480
+ if (inMyRoom && hasTranslation) {
481
+ if (!originalConsumer.consumer.paused) {
482
+ await pauseOriginalProducer({
483
+ originalProducerId,
484
+ speakerId,
485
+ parameters
486
+ });
487
+ }
488
+ }
489
+ }
490
+ } catch (error) {
491
+ console.error("[TranslationSwitch] Error syncing translation state:", error);
492
+ }
493
+ };
494
+ exports.buildAddVideosGridPlan = buildAddVideosGridPlan;
495
+ exports.buildMainHostCardPlan = buildMainHostCardPlan;
496
+ exports.buildMainScreenState = buildMainScreenState;
497
+ exports.buildPrepopulateUserMediaPlan = buildPrepopulateUserMediaPlan;
498
+ exports.buildScreenShareHostCardPlan = buildScreenShareHostCardPlan;
499
+ exports.findOriginalProducerForSpeaker = findOriginalProducerForSpeaker;
500
+ exports.getActiveTranslationConsumers = getActiveTranslationConsumers;
501
+ exports.isConsumingTranslationForSpeaker = isConsumingTranslationForSpeaker;
502
+ exports.isSpeakerInMyBreakoutRoom = isSpeakerInMyBreakoutRoom;
503
+ exports.pauseOriginalProducer = pauseOriginalProducer;
504
+ exports.resolveHostVideoStream = resolveHostVideoStream;
505
+ exports.resolveMainHostRenderMode = resolveMainHostRenderMode;
506
+ exports.resumeOriginalProducer = resumeOriginalProducer;
507
+ exports.stopConsumingTranslation = stopConsumingTranslation;
508
+ exports.syncTranslationStateAfterBreakoutChange = syncTranslationStateAfterBreakoutChange;
509
+ //# sourceMappingURL=translationConsumerSwitch-C20MfNNq.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translationConsumerSwitch-C20MfNNq.cjs","sources":["../src/consumers/gridLayout/addVideosGrid.engine.ts","../src/consumers/gridLayout/prepopulateUserMedia.engine.ts","../src/consumers/translationConsumerSwitch.ts"],"sourcesContent":["export interface GridPlanEntry<T> {\n stream: T;\n index: number;\n}\n\nexport interface BuildAddVideosGridPlanOptions<T> {\n mainGridStreams: T[];\n altGridStreams: T[];\n numToAdd?: number;\n}\n\nexport interface AddVideosGridPlan<T> {\n mainEntries: GridPlanEntry<T>[];\n altEntries: GridPlanEntry<T>[];\n}\n\n/**\n * Pure planning engine for addVideosGrid.\n * Produces deterministic main/alt stream iteration plans without rendering concerns.\n */\nexport function buildAddVideosGridPlan<T>({\n mainGridStreams,\n altGridStreams,\n numToAdd,\n}: BuildAddVideosGridPlanOptions<T>): AddVideosGridPlan<T> {\n const safeMain = Array.isArray(mainGridStreams) ? mainGridStreams : [];\n const safeAlt = Array.isArray(altGridStreams) ? altGridStreams : [];\n\n const bounded = Math.max(0, Math.min(numToAdd ?? safeMain.length, safeMain.length));\n\n const mainEntries = safeMain.slice(0, bounded).map((stream, index) => ({\n stream,\n index,\n }));\n\n const altEntries = safeAlt.map((stream, index) => ({\n stream,\n index,\n }));\n\n return { mainEntries, altEntries };\n}\n","export interface PrepopulateParticipantLike {\n name?: string;\n islevel?: string;\n ScreenID?: string;\n ScreenOn?: boolean;\n [key: string]: any;\n}\n\nexport interface PrepopulateStreamLike {\n producerId?: string;\n stream?: any;\n [key: string]: any;\n}\n\nexport interface BuildPrepopulateUserMediaPlanOptions<\n P extends PrepopulateParticipantLike,\n S extends PrepopulateStreamLike,\n> {\n participants: P[];\n allVideoStreams: S[];\n member: string;\n islevel: string;\n shared: boolean;\n shareScreenStarted: boolean;\n eventType: string;\n screenId?: string;\n whiteboardStarted: boolean;\n whiteboardEnded: boolean;\n remoteScreenStream: S[];\n localStreamScreen: any;\n checkOrientation: () => string;\n isWideScreen: boolean;\n forceFullDisplay: boolean;\n includeWhiteboardAsScreenFlow?: boolean;\n}\n\nexport interface PrepopulateUserMediaPlan<P extends PrepopulateParticipantLike> {\n screenFlowActive: boolean;\n shouldReturnEarly: boolean;\n shouldUpdateAdminOnMainScreen: boolean;\n screenForceFullDisplay: boolean;\n host: P | null;\n hostStream: any;\n adminOnMainScreen: boolean;\n mainScreenPerson: string;\n}\n\nexport interface ResolveMainHostRenderModeOptions {\n islevel: string;\n localUIMode: boolean;\n videoAlreadyOn: boolean;\n audioAlreadyOn: boolean;\n hostVideoOn: boolean;\n hostMuted?: boolean;\n}\n\nexport type MainHostRenderMode = 'adminVideo' | 'audio' | 'mini' | 'video';\n\nexport interface ResolveHostVideoStreamOptions<TStreamLike = PrepopulateStreamLike> {\n islevel: string;\n keepBackground: boolean;\n virtualStream: any;\n localStreamVideo: any;\n oldAllStreams: TStreamLike[];\n hostVideoID?: string;\n}\n\nexport interface BuildMainScreenStateOptions {\n filled: boolean;\n adminOnMainScreen: boolean;\n mainScreenPerson: string;\n}\n\nexport interface MainScreenState {\n filled: boolean;\n adminOnMainScreen: boolean;\n mainScreenPerson: string;\n}\n\nexport interface BuildMainHostCardPlanOptions<TStreamLike = PrepopulateStreamLike> {\n islevel: string;\n localUIMode: boolean;\n videoAlreadyOn: boolean;\n audioAlreadyOn: boolean;\n hostVideoOn: boolean;\n hostMuted?: boolean;\n hostIsAdmin: boolean;\n hostName: string;\n hostVideoID?: string;\n fallbackName: string;\n member: string;\n keepBackground: boolean;\n virtualStream: any;\n localStreamVideo: any;\n oldAllStreams: TStreamLike[];\n}\n\nexport interface MainHostCardPlan {\n kind: 'video' | 'audio' | 'mini';\n key: string;\n name: string;\n initials?: string;\n remoteProducerId?: string;\n videoStream?: any;\n doMirror?: boolean;\n state: MainScreenState;\n}\n\nexport interface BuildScreenShareHostCardPlanOptions {\n hostName: string;\n hostScreenID?: string;\n hostIsAdmin: boolean;\n shared: boolean;\n hostStream: any;\n screenForceFullDisplay: boolean;\n annotateScreenStream: boolean;\n}\n\nexport interface ScreenShareHostCardPlan {\n key: string;\n name: string;\n remoteProducerId: string;\n videoStream: any;\n forceFullDisplay: boolean;\n doMirror: false;\n state: MainScreenState;\n}\n\n/**\n * Pure helper for resolving which non-screen-share host card mode should render.\n */\nexport function resolveMainHostRenderMode({\n islevel,\n localUIMode,\n videoAlreadyOn,\n audioAlreadyOn,\n hostVideoOn,\n hostMuted,\n}: ResolveMainHostRenderModeOptions): MainHostRenderMode {\n const hostVideoOffPath =\n (islevel !== '2' && !hostVideoOn)\n || (islevel === '2' && (!hostVideoOn || !videoAlreadyOn))\n || localUIMode === true;\n\n if (!hostVideoOffPath) {\n return 'video';\n }\n\n if (islevel === '2' && videoAlreadyOn) {\n return 'adminVideo';\n }\n\n const audOn =\n (islevel === '2' && audioAlreadyOn)\n || (islevel !== '2' && hostMuted === false);\n\n return audOn ? 'audio' : 'mini';\n}\n\n/**\n * Resolves the correct host video stream source for non-screen-share rendering.\n */\nexport function resolveHostVideoStream<TStreamLike extends PrepopulateStreamLike = PrepopulateStreamLike>({\n islevel,\n keepBackground,\n virtualStream,\n localStreamVideo,\n oldAllStreams,\n hostVideoID,\n}: ResolveHostVideoStreamOptions<TStreamLike>): any {\n if (islevel === '2') {\n return keepBackground && virtualStream ? virtualStream : localStreamVideo;\n }\n\n const safeOldStreams = Array.isArray(oldAllStreams) ? oldAllStreams : [];\n const matched = safeOldStreams.find((stream) => stream.producerId === hostVideoID);\n return matched?.stream ?? null;\n}\n\n/**\n * Pure helper for normalizing main-screen state updates.\n */\nexport function buildMainScreenState({\n filled,\n adminOnMainScreen,\n mainScreenPerson,\n}: BuildMainScreenStateOptions): MainScreenState {\n return {\n filled,\n adminOnMainScreen,\n mainScreenPerson,\n };\n}\n\n/**\n * Pure helper for resolving the non-screen-share host card to render on the main screen.\n */\nexport function buildMainHostCardPlan<TStreamLike extends PrepopulateStreamLike = PrepopulateStreamLike>({\n islevel,\n localUIMode,\n videoAlreadyOn,\n audioAlreadyOn,\n hostVideoOn,\n hostMuted,\n hostIsAdmin,\n hostName,\n hostVideoID,\n fallbackName,\n member,\n keepBackground,\n virtualStream,\n localStreamVideo,\n oldAllStreams,\n}: BuildMainHostCardPlanOptions<TStreamLike>): MainHostCardPlan {\n const mode = resolveMainHostRenderMode({\n islevel,\n localUIMode,\n videoAlreadyOn,\n audioAlreadyOn,\n hostVideoOn,\n hostMuted,\n });\n\n if (mode === 'adminVideo') {\n return {\n kind: 'video',\n key: hostVideoID || hostName || 'host-video',\n name: hostName,\n remoteProducerId: hostVideoID || '',\n videoStream: keepBackground && virtualStream ? virtualStream : localStreamVideo,\n doMirror: true,\n state: buildMainScreenState({\n filled: true,\n adminOnMainScreen: true,\n mainScreenPerson: hostName,\n }),\n };\n }\n\n if (mode === 'audio') {\n return {\n kind: 'audio',\n key: hostName || fallbackName,\n name: hostName,\n state: buildMainScreenState({\n filled: true,\n adminOnMainScreen: islevel === '2',\n mainScreenPerson: hostName,\n }),\n };\n }\n\n if (mode === 'mini') {\n return {\n kind: 'mini',\n key: fallbackName,\n name: hostName,\n initials: fallbackName,\n state: buildMainScreenState({\n filled: false,\n adminOnMainScreen: islevel === '2',\n mainScreenPerson: hostName,\n }),\n };\n }\n\n const hostStream = resolveHostVideoStream({\n islevel,\n keepBackground,\n virtualStream,\n localStreamVideo,\n oldAllStreams,\n hostVideoID,\n });\n\n if (!hostStream) {\n return {\n kind: 'mini',\n key: fallbackName,\n name: hostName,\n initials: fallbackName,\n state: buildMainScreenState({\n filled: false,\n adminOnMainScreen: islevel === '2',\n mainScreenPerson: hostName,\n }),\n };\n }\n\n return {\n kind: 'video',\n key: hostVideoID || hostName || 'host-video',\n name: hostName,\n remoteProducerId: hostVideoID || '',\n videoStream: hostStream,\n doMirror: member === hostName,\n state: buildMainScreenState({\n filled: true,\n adminOnMainScreen: hostIsAdmin,\n mainScreenPerson: hostName,\n }),\n };\n}\n\n/**\n * Pure helper for resolving the screen-share host card to render on the main screen.\n */\nexport function buildScreenShareHostCardPlan({\n hostName,\n hostScreenID,\n hostIsAdmin,\n shared,\n hostStream,\n screenForceFullDisplay,\n annotateScreenStream,\n}: BuildScreenShareHostCardPlanOptions): ScreenShareHostCardPlan {\n return {\n key: hostScreenID || hostName || 'host-screen',\n name: hostName,\n remoteProducerId: hostScreenID || '',\n videoStream: shared ? hostStream : hostStream?.stream ?? null,\n forceFullDisplay: annotateScreenStream && shared ? false : screenForceFullDisplay,\n doMirror: false,\n state: buildMainScreenState({\n filled: true,\n adminOnMainScreen: hostIsAdmin,\n mainScreenPerson: hostName,\n }),\n };\n}\n\n/**\n * Pure planning engine for prepopulateUserMedia host/screen-flow resolution.\n * Returns deterministic state decisions without rendering concerns.\n */\nexport function buildPrepopulateUserMediaPlan<\n P extends PrepopulateParticipantLike,\n S extends PrepopulateStreamLike,\n>({\n participants,\n allVideoStreams,\n member,\n shared,\n shareScreenStarted,\n eventType,\n screenId,\n whiteboardStarted,\n whiteboardEnded,\n remoteScreenStream,\n localStreamScreen,\n checkOrientation,\n isWideScreen,\n forceFullDisplay,\n includeWhiteboardAsScreenFlow = false,\n}: BuildPrepopulateUserMediaPlanOptions<P, S>): PrepopulateUserMediaPlan<P> {\n const safeParticipants = Array.isArray(participants) ? participants : [];\n const safeVideoStreams = Array.isArray(allVideoStreams) ? allVideoStreams : [];\n const safeRemoteScreenStreams = Array.isArray(remoteScreenStream) ? remoteScreenStream : [];\n\n const whiteboardActive = whiteboardStarted && !whiteboardEnded;\n const screenFlowActive =\n shareScreenStarted || shared || (includeWhiteboardAsScreenFlow && whiteboardActive);\n\n let screenForceFullDisplay = forceFullDisplay;\n const orientation = checkOrientation();\n if ((orientation === 'portrait' || !isWideScreen) && (shareScreenStarted || shared)) {\n screenForceFullDisplay = false;\n }\n\n if (!screenFlowActive) {\n if (eventType === 'conference') {\n return {\n screenFlowActive,\n shouldReturnEarly: true,\n shouldUpdateAdminOnMainScreen: false,\n screenForceFullDisplay,\n host: null,\n hostStream: null,\n adminOnMainScreen: false,\n mainScreenPerson: '',\n };\n }\n\n const host = safeParticipants.find((participant) => participant.islevel === '2') ?? null;\n\n return {\n screenFlowActive,\n shouldReturnEarly: false,\n shouldUpdateAdminOnMainScreen: false,\n screenForceFullDisplay,\n host,\n hostStream: null,\n adminOnMainScreen: false,\n mainScreenPerson: host?.name ?? '',\n };\n }\n\n let host: P | null = null;\n let hostStream: any = null;\n\n if (shared) {\n host = { name: member, audioID: '', videoID: '' } as unknown as P;\n hostStream = localStreamScreen;\n } else {\n host =\n safeParticipants.find(\n (participant) => participant.ScreenID === screenId && participant.ScreenOn === true,\n ) ?? null;\n\n if (whiteboardActive) {\n host = {\n name: 'WhiteboardActive',\n islevel: '2',\n audioID: '',\n videoID: '',\n } as unknown as P;\n hostStream = { producerId: 'WhiteboardActive' };\n }\n\n if (host === null) {\n host = safeParticipants.find((participant) => participant.ScreenOn === true) ?? null;\n }\n\n if (host && !String(host.name ?? '').includes('WhiteboardActive')) {\n if (safeRemoteScreenStreams.length === 0) {\n hostStream =\n safeVideoStreams.find((stream) => stream.producerId === host?.ScreenID) ?? null;\n } else {\n hostStream = safeRemoteScreenStreams[0];\n }\n }\n }\n\n return {\n screenFlowActive,\n shouldReturnEarly: false,\n shouldUpdateAdminOnMainScreen: true,\n screenForceFullDisplay,\n host,\n hostStream,\n adminOnMainScreen: (host && host.islevel === '2') ?? false,\n mainScreenPerson: host?.name ?? '',\n };\n}\n","import { BreakoutParticipant, EventType, Participant, Transport } from '../types/types';\n\nexport interface TranslationConsumerSwitchParameters {\n consumerTransports: Transport[];\n roomName: string;\n member: string;\n updateConsumerTransports: (transports: Transport[]) => void;\n breakOutRoomStarted?: boolean;\n breakOutRoomEnded?: boolean;\n breakoutRooms?: BreakoutParticipant[][];\n limitedBreakRoom?: BreakoutParticipant[];\n participants?: Participant[];\n ref_participants?: Participant[];\n islevel?: string;\n eventType?: EventType;\n hostNewRoom?: number;\n [key: string]: any;\n}\n\nexport interface PauseOriginalProducerOptions {\n originalProducerId: string;\n speakerId?: string;\n parameters: TranslationConsumerSwitchParameters;\n}\n\nexport interface ResumeOriginalProducerOptions {\n originalProducerId: string;\n speakerId?: string;\n parameters: TranslationConsumerSwitchParameters;\n}\n\nexport type PauseOriginalProducerType = (options: PauseOriginalProducerOptions) => Promise<void>;\nexport type ResumeOriginalProducerType = (options: ResumeOriginalProducerOptions) => Promise<void>;\n\nexport interface StopConsumingTranslationOptions {\n speakerId?: string;\n language: string;\n translationProducerMap: Record<string, Record<string, string>>;\n parameters: TranslationConsumerSwitchParameters;\n}\n\nexport type StopConsumingTranslationType = (options: StopConsumingTranslationOptions) => Promise<string | null>;\n\nexport const isSpeakerInMyBreakoutRoom = (\n speakerName: string,\n parameters: TranslationConsumerSwitchParameters\n): boolean => {\n const {\n breakOutRoomStarted = false,\n breakOutRoomEnded = false,\n limitedBreakRoom = [],\n participants = [],\n islevel = '1',\n eventType = 'conference',\n hostNewRoom = -1,\n breakoutRooms = [],\n member = '',\n } = parameters;\n\n if (!breakOutRoomStarted || breakOutRoomEnded) {\n return true;\n }\n\n const host = participants.find((p) => p.islevel === '2');\n const speakerIsHost = host?.name === speakerName;\n\n if (islevel !== '2') {\n if (eventType === 'webinar' && speakerIsHost) {\n return true;\n }\n\n if (eventType === 'conference' && speakerIsHost) {\n const roomMember = breakoutRooms.find((r) =>\n r.find((p) => p.name === member)\n );\n const memberBreakRoom = roomMember ? breakoutRooms.indexOf(roomMember) : -1;\n const inBreakRoom = memberBreakRoom !== -1;\n\n if (inBreakRoom) {\n return memberBreakRoom === hostNewRoom;\n }\n\n if (hostNewRoom === -1) {\n return true;\n }\n\n return hostNewRoom === memberBreakRoom && memberBreakRoom !== -1;\n }\n }\n\n return limitedBreakRoom.some((p) => p.name === speakerName);\n};\n\nexport const pauseOriginalProducer = async ({\n originalProducerId,\n speakerId,\n parameters,\n}: PauseOriginalProducerOptions): Promise<void> => {\n try {\n const { consumerTransports } = parameters;\n\n if (speakerId && !isSpeakerInMyBreakoutRoom(speakerId, parameters)) {\n return;\n }\n\n const transport = consumerTransports.find(\n (t) => t.producerId === originalProducerId && t.consumer?.kind === 'audio'\n );\n\n if (!transport?.consumer) {\n return;\n }\n\n if (transport.consumer.track) {\n transport.consumer.track.enabled = false;\n }\n\n if (transport.consumer.paused) {\n return;\n }\n\n transport.consumer.pause();\n\n transport.socket_?.emit(\n 'consumer-pause',\n { serverConsumerId: transport.serverConsumerTransportId },\n async () => {}\n );\n } catch (error) {\n console.error('[TranslationSwitch] Error pausing original producer:', error);\n }\n};\n\nexport const resumeOriginalProducer = async ({\n originalProducerId,\n speakerId,\n parameters,\n}: ResumeOriginalProducerOptions): Promise<void> => {\n try {\n const { consumerTransports } = parameters;\n\n if (speakerId && !isSpeakerInMyBreakoutRoom(speakerId, parameters)) {\n return;\n }\n\n const transport = consumerTransports.find(\n (t) => t.producerId === originalProducerId && t.consumer?.kind === 'audio'\n );\n\n if (!transport?.consumer) {\n return;\n }\n\n if (!transport.consumer.paused) {\n if (transport.consumer.track) {\n transport.consumer.track.enabled = true;\n }\n return;\n }\n\n transport.socket_?.emit(\n 'consumer-resume',\n { serverConsumerId: transport.serverConsumerTransportId },\n async ({ resumed }: { resumed: boolean }) => {\n if (resumed) {\n if (transport.consumer.track) {\n transport.consumer.track.enabled = true;\n }\n transport.consumer.resume();\n }\n }\n );\n } catch (error) {\n console.error('[TranslationSwitch] Error resuming original producer:', error);\n }\n};\n\nexport const isConsumingTranslationForSpeaker = (\n speakerId: string,\n consumerTransports: Transport[],\n translationProducerMap: Map<string, { translationProducerId: string; originalProducerId: string; language: string }>\n): { consuming: boolean; language?: string; translationProducerId?: string; originalProducerId?: string } => {\n const translationInfo = translationProducerMap.get(speakerId);\n\n if (translationInfo) {\n const hasConsumer = consumerTransports.some(\n (t) => t.producerId === translationInfo.translationProducerId\n );\n\n if (hasConsumer) {\n return {\n consuming: true,\n language: translationInfo.language,\n translationProducerId: translationInfo.translationProducerId,\n originalProducerId: translationInfo.originalProducerId,\n };\n }\n }\n\n return { consuming: false };\n};\n\nexport const getActiveTranslationConsumers = (\n translationProducerMap: Map<string, { translationProducerId: string; originalProducerId: string; language: string }>,\n consumerTransports: Transport[]\n): Array<{ speakerId: string; translationProducerId: string; originalProducerId: string; language: string }> => {\n const results: Array<{ speakerId: string; translationProducerId: string; originalProducerId: string; language: string }> = [];\n\n translationProducerMap.forEach((info, speakerId) => {\n const hasConsumer = consumerTransports.some(\n (t) => t.producerId === info.translationProducerId\n );\n\n if (hasConsumer) {\n results.push({\n speakerId,\n ...info,\n });\n }\n });\n\n return results;\n};\n\nexport const findOriginalProducerForSpeaker = (\n speakerId: string,\n allAudioStreams: Array<{ producerId: string; name?: string; [key: string]: any }>\n): string | null => {\n const stream = allAudioStreams.find(\n (s) => s.name === speakerId || s.producerId?.includes(speakerId)\n );\n return stream?.producerId || null;\n};\n\nexport const stopConsumingTranslation = async (options: StopConsumingTranslationOptions): Promise<string | null> => {\n const { language, translationProducerMap, parameters } = options;\n try {\n const { consumerTransports, updateConsumerTransports } = parameters;\n\n let originalProducerId: string | null = null;\n let translationProducerId: string | null = null;\n\n for (const [origId, langMap] of Object.entries(translationProducerMap)) {\n if (langMap && langMap[language]) {\n translationProducerId = langMap[language];\n originalProducerId = origId;\n break;\n }\n }\n\n if (!translationProducerId) {\n return originalProducerId;\n }\n\n const transportIndex = consumerTransports.findIndex(\n (t) => t.producerId === translationProducerId\n );\n\n if (transportIndex === -1) {\n return originalProducerId;\n }\n\n const transport = consumerTransports[transportIndex];\n\n if (transport.socket_ && transport.consumer) {\n transport.socket_.emit(\n 'consumer-close',\n { serverConsumerId: transport.serverConsumerTransportId },\n () => {}\n );\n }\n\n if (transport.consumer) {\n transport.consumer.close();\n }\n\n const updatedTransports = consumerTransports.filter((_, i) => i !== transportIndex);\n updateConsumerTransports(updatedTransports);\n\n return originalProducerId;\n } catch (error) {\n console.error('[TranslationSwitch] Error stopping translation consumer:', error);\n return null;\n }\n};\n\nexport const syncTranslationStateAfterBreakoutChange = async (\n translationProducerMap: Record<string, Record<string, string>>,\n speakerIdByProducerId: Record<string, string>,\n parameters: TranslationConsumerSwitchParameters\n): Promise<void> => {\n try {\n const { consumerTransports } = parameters;\n\n for (const [originalProducerId, langMap] of Object.entries(translationProducerMap)) {\n const speakerId = speakerIdByProducerId[originalProducerId];\n if (!speakerId) continue;\n\n const inMyRoom = isSpeakerInMyBreakoutRoom(speakerId, parameters);\n const hasTranslation = Object.keys(langMap).length > 0;\n\n const originalConsumer = consumerTransports.find(\n (t) => t.producerId === originalProducerId && t.consumer?.kind === 'audio'\n );\n\n if (!originalConsumer) continue;\n\n if (inMyRoom && hasTranslation) {\n if (!originalConsumer.consumer.paused) {\n await pauseOriginalProducer({\n originalProducerId,\n speakerId,\n parameters,\n });\n }\n }\n }\n } catch (error) {\n console.error('[TranslationSwitch] Error syncing translation state:', error);\n }\n};\n"],"names":["host"],"mappings":"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"}