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.
- package/HEADLESS_GUIDE.md +156 -0
- package/README.md +130 -62
- package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts +23 -0
- package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts.map +1 -0
- package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts +22 -0
- package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts.map +1 -0
- package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts +85 -0
- package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts.map +1 -0
- package/dist/consumers/addVideosGrid.d.ts +10 -0
- package/dist/consumers/addVideosGrid.d.ts.map +1 -0
- package/dist/consumers/autoAdjust.d.ts +41 -0
- package/dist/consumers/autoAdjust.d.ts.map +1 -0
- package/dist/consumers/calculateRowsAndColumns.d.ts +24 -0
- package/dist/consumers/calculateRowsAndColumns.d.ts.map +1 -0
- package/dist/consumers/changeVids.d.ts +252 -0
- package/dist/consumers/changeVids.d.ts.map +1 -0
- package/dist/consumers/checkGrid.d.ts +42 -0
- package/dist/consumers/checkGrid.d.ts.map +1 -0
- package/dist/consumers/checkPermission.d.ts +42 -0
- package/dist/consumers/checkPermission.d.ts.map +1 -0
- package/dist/consumers/checkScreenShare.d.ts +59 -0
- package/dist/consumers/checkScreenShare.d.ts.map +1 -0
- package/dist/consumers/closeAndResize.d.ts +157 -0
- package/dist/consumers/closeAndResize.d.ts.map +1 -0
- package/dist/consumers/compareActiveNames.d.ts +50 -0
- package/dist/consumers/compareActiveNames.d.ts.map +1 -0
- package/dist/consumers/compareScreenStates.d.ts +55 -0
- package/dist/consumers/compareScreenStates.d.ts.map +1 -0
- package/dist/consumers/connectIps.d.ts +66 -0
- package/dist/consumers/connectIps.d.ts.map +1 -0
- package/dist/consumers/connectLocalIps.d.ts +52 -0
- package/dist/consumers/connectLocalIps.d.ts.map +1 -0
- package/dist/consumers/connectRecvTransport.d.ts +64 -0
- package/dist/consumers/connectRecvTransport.d.ts.map +1 -0
- package/dist/consumers/connectSendTransport.d.ts +75 -0
- package/dist/consumers/connectSendTransport.d.ts.map +1 -0
- package/dist/consumers/connectSendTransportAudio.d.ts +62 -0
- package/dist/consumers/connectSendTransportAudio.d.ts.map +1 -0
- package/dist/consumers/connectSendTransportScreen.d.ts +72 -0
- package/dist/consumers/connectSendTransportScreen.d.ts.map +1 -0
- package/dist/consumers/connectSendTransportVideo.d.ts +75 -0
- package/dist/consumers/connectSendTransportVideo.d.ts.map +1 -0
- package/dist/consumers/consumerResume.d.ts +16 -0
- package/dist/consumers/consumerResume.d.ts.map +1 -0
- package/dist/consumers/controlMedia.d.ts +61 -0
- package/dist/consumers/controlMedia.d.ts.map +1 -0
- package/dist/consumers/createSendTransport.d.ts +80 -0
- package/dist/consumers/createSendTransport.d.ts.map +1 -0
- package/dist/consumers/disconnectSendTransportAudio.d.ts +79 -0
- package/dist/consumers/disconnectSendTransportAudio.d.ts.map +1 -0
- package/dist/consumers/disconnectSendTransportScreen.d.ts +61 -0
- package/dist/consumers/disconnectSendTransportScreen.d.ts.map +1 -0
- package/dist/consumers/disconnectSendTransportVideo.d.ts +72 -0
- package/dist/consumers/disconnectSendTransportVideo.d.ts.map +1 -0
- package/dist/consumers/dispStreams.d.ts +189 -0
- package/dist/consumers/dispStreams.d.ts.map +1 -0
- package/dist/consumers/frameworkConsumerContract.d.ts +2 -0
- package/dist/consumers/frameworkConsumerContract.d.ts.map +1 -0
- package/dist/consumers/generatePageContent.d.ts +68 -0
- package/dist/consumers/generatePageContent.d.ts.map +1 -0
- package/dist/consumers/getEstimate.d.ts +62 -0
- package/dist/consumers/getEstimate.d.ts.map +1 -0
- package/dist/consumers/getPipedProducersAlt.d.ts +62 -0
- package/dist/consumers/getPipedProducersAlt.d.ts.map +1 -0
- package/dist/consumers/getProducersPiped.d.ts +49 -0
- package/dist/consumers/getProducersPiped.d.ts.map +1 -0
- package/dist/consumers/getVideos.d.ts +49 -0
- package/dist/consumers/getVideos.d.ts.map +1 -0
- package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts +19 -0
- package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts.map +1 -0
- package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts +138 -0
- package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts.map +1 -0
- package/dist/consumers/index.cjs +80 -0
- package/dist/consumers/index.cjs.map +1 -0
- package/dist/consumers/index.d.ts +62 -0
- package/dist/consumers/index.d.ts.map +1 -0
- package/dist/consumers/index.js +80 -0
- package/dist/consumers/index.js.map +1 -0
- package/dist/consumers/mixStreams.d.ts +37 -0
- package/dist/consumers/mixStreams.d.ts.map +1 -0
- package/dist/consumers/onScreenChanges.d.ts +62 -0
- package/dist/consumers/onScreenChanges.d.ts.map +1 -0
- package/dist/consumers/prepopulateUserMedia.d.ts +10 -0
- package/dist/consumers/prepopulateUserMedia.d.ts.map +1 -0
- package/dist/consumers/processConsumerTransports.d.ts +73 -0
- package/dist/consumers/processConsumerTransports.d.ts.map +1 -0
- package/dist/consumers/processConsumerTransportsAudio.d.ts +57 -0
- package/dist/consumers/processConsumerTransportsAudio.d.ts.map +1 -0
- package/dist/consumers/rePort.d.ts +63 -0
- package/dist/consumers/rePort.d.ts.map +1 -0
- package/dist/consumers/reUpdateInter.d.ts +142 -0
- package/dist/consumers/reUpdateInter.d.ts.map +1 -0
- package/dist/consumers/readjust.d.ts +68 -0
- package/dist/consumers/readjust.d.ts.map +1 -0
- package/dist/consumers/receiveAllPipedTransports.d.ts +44 -0
- package/dist/consumers/receiveAllPipedTransports.d.ts.map +1 -0
- package/dist/consumers/receiveRoomMessages.d.ts +31 -0
- package/dist/consumers/receiveRoomMessages.d.ts.map +1 -0
- package/dist/consumers/reorderStreams.d.ts +98 -0
- package/dist/consumers/reorderStreams.d.ts.map +1 -0
- package/dist/consumers/requestScreenShare.d.ts +47 -0
- package/dist/consumers/requestScreenShare.d.ts.map +1 -0
- package/dist/consumers/resumePauseAudioStreams.d.ts +85 -0
- package/dist/consumers/resumePauseAudioStreams.d.ts.map +1 -0
- package/dist/consumers/resumePauseStreams.d.ts +68 -0
- package/dist/consumers/resumePauseStreams.d.ts.map +1 -0
- package/dist/consumers/resumeSendTransportAudio.d.ts +65 -0
- package/dist/consumers/resumeSendTransportAudio.d.ts.map +1 -0
- package/dist/consumers/signalNewConsumerTransport.d.ts +59 -0
- package/dist/consumers/signalNewConsumerTransport.d.ts.map +1 -0
- package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts +76 -0
- package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts.map +1 -0
- package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts +119 -0
- package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts.map +1 -0
- package/dist/consumers/socketReceiveMethods/producerClosed.d.ts +53 -0
- package/dist/consumers/socketReceiveMethods/producerClosed.d.ts.map +1 -0
- package/dist/consumers/startShareScreen.d.ts +58 -0
- package/dist/consumers/startShareScreen.d.ts.map +1 -0
- package/dist/consumers/stopShareScreen.d.ts +127 -0
- package/dist/consumers/stopShareScreen.d.ts.map +1 -0
- package/dist/consumers/streamSuccessAudio.d.ts +149 -0
- package/dist/consumers/streamSuccessAudio.d.ts.map +1 -0
- package/dist/consumers/streamSuccessAudioSwitch.d.ts +131 -0
- package/dist/consumers/streamSuccessAudioSwitch.d.ts.map +1 -0
- package/dist/consumers/streamSuccessScreen.d.ts +109 -0
- package/dist/consumers/streamSuccessScreen.d.ts.map +1 -0
- package/dist/consumers/streamSuccessVideo.d.ts +160 -0
- package/dist/consumers/streamSuccessVideo.d.ts.map +1 -0
- package/dist/consumers/switchUserAudio.d.ts +56 -0
- package/dist/consumers/switchUserAudio.d.ts.map +1 -0
- package/dist/consumers/switchUserVideo.d.ts +77 -0
- package/dist/consumers/switchUserVideo.d.ts.map +1 -0
- package/dist/consumers/switchUserVideoAlt.d.ts +69 -0
- package/dist/consumers/switchUserVideoAlt.d.ts.map +1 -0
- package/dist/consumers/translationConsumerSwitch.d.ts +67 -0
- package/dist/consumers/translationConsumerSwitch.d.ts.map +1 -0
- package/dist/consumers/trigger.d.ts +71 -0
- package/dist/consumers/trigger.d.ts.map +1 -0
- package/dist/consumers/updateMiniCardsGrid.d.ts +65 -0
- package/dist/consumers/updateMiniCardsGrid.d.ts.map +1 -0
- package/dist/consumers/updateParticipantAudioDecibels.d.ts +31 -0
- package/dist/consumers/updateParticipantAudioDecibels.d.ts.map +1 -0
- package/dist/getParticipantMedia-B0JS6d2b.js +3555 -0
- package/dist/getParticipantMedia-B0JS6d2b.js.map +1 -0
- package/dist/getParticipantMedia-CdcYqcbD.cjs +3554 -0
- package/dist/getParticipantMedia-CdcYqcbD.cjs.map +1 -0
- package/dist/index.cjs +2727 -13252
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +192 -11233
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2636 -13143
- package/dist/index.js.map +1 -1
- package/dist/index.native.cjs +352 -0
- package/dist/index.native.cjs.map +1 -0
- package/dist/index.native.d.ts +204 -0
- package/dist/index.native.d.ts.map +1 -0
- package/dist/index.native.js +352 -0
- package/dist/index.native.js.map +1 -0
- package/dist/joinLocalRoom-BdM1msQt.cjs +673 -0
- package/dist/joinLocalRoom-BdM1msQt.cjs.map +1 -0
- package/dist/joinLocalRoom-CvteNe4R.js +657 -0
- package/dist/joinLocalRoom-CvteNe4R.js.map +1 -0
- package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs +1222 -0
- package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs.map +1 -0
- package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js +1223 -0
- package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js.map +1 -0
- package/dist/methods/background/launchBackground.d.ts +10 -0
- package/dist/methods/background/launchBackground.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts +67 -0
- package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/handleStartBreakout.d.ts +42 -0
- package/dist/methods/breakoutRooms/handleStartBreakout.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/handleStopBreakout.d.ts +33 -0
- package/dist/methods/breakoutRooms/handleStopBreakout.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/index.d.ts +5 -0
- package/dist/methods/breakoutRooms/index.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts +25 -0
- package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts.map +1 -0
- package/dist/methods/coHost/launchCoHost.d.ts +25 -0
- package/dist/methods/coHost/launchCoHost.d.ts.map +1 -0
- package/dist/methods/coHostMethods/index.d.ts +3 -0
- package/dist/methods/coHostMethods/index.d.ts.map +1 -0
- package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts +49 -0
- package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts.map +1 -0
- package/dist/methods/displaySettings/index.d.ts +2 -0
- package/dist/methods/displaySettings/index.d.ts.map +1 -0
- package/dist/methods/displaySettings/launchDisplaySettings.d.ts +25 -0
- package/dist/methods/displaySettings/launchDisplaySettings.d.ts.map +1 -0
- package/dist/methods/displaySettings/modifyDisplaySettings.d.ts +106 -0
- package/dist/methods/displaySettings/modifyDisplaySettings.d.ts.map +1 -0
- package/dist/methods/exit/confirmExit.d.ts +38 -0
- package/dist/methods/exit/confirmExit.d.ts.map +1 -0
- package/dist/methods/exit/index.d.ts +3 -0
- package/dist/methods/exit/index.d.ts.map +1 -0
- package/dist/methods/exit/launchConfirmExit.d.ts +23 -0
- package/dist/methods/exit/launchConfirmExit.d.ts.map +1 -0
- package/dist/methods/index.cjs +3975 -0
- package/dist/methods/index.cjs.map +1 -0
- package/dist/methods/index.d.ts +66 -0
- package/dist/methods/index.d.ts.map +1 -0
- package/dist/methods/index.js +3976 -0
- package/dist/methods/index.js.map +1 -0
- package/dist/methods/mediaSettings/launchMediaSettings.d.ts +38 -0
- package/dist/methods/mediaSettings/launchMediaSettings.d.ts.map +1 -0
- package/dist/methods/menu/launchMenuModal.d.ts +22 -0
- package/dist/methods/menu/launchMenuModal.d.ts.map +1 -0
- package/dist/methods/message/index.d.ts +2 -0
- package/dist/methods/message/index.d.ts.map +1 -0
- package/dist/methods/message/launchMessages.d.ts +24 -0
- package/dist/methods/message/launchMessages.d.ts.map +1 -0
- package/dist/methods/message/sendMessage.d.ts +63 -0
- package/dist/methods/message/sendMessage.d.ts.map +1 -0
- package/dist/methods/panelists/focusPanelists.d.ts +24 -0
- package/dist/methods/panelists/focusPanelists.d.ts.map +1 -0
- package/dist/methods/panelists/index.d.ts +4 -0
- package/dist/methods/panelists/index.d.ts.map +1 -0
- package/dist/methods/panelists/launchPanelists.d.ts +7 -0
- package/dist/methods/panelists/launchPanelists.d.ts.map +1 -0
- package/dist/methods/panelists/updatePanelists.d.ts +35 -0
- package/dist/methods/panelists/updatePanelists.d.ts.map +1 -0
- package/dist/methods/participants/index.d.ts +4 -0
- package/dist/methods/participants/index.d.ts.map +1 -0
- package/dist/methods/participants/launchParticipants.d.ts +22 -0
- package/dist/methods/participants/launchParticipants.d.ts.map +1 -0
- package/dist/methods/participants/messageParticipants.d.ts +43 -0
- package/dist/methods/participants/messageParticipants.d.ts.map +1 -0
- package/dist/methods/participants/muteParticipants.d.ts +41 -0
- package/dist/methods/participants/muteParticipants.d.ts.map +1 -0
- package/dist/methods/participants/removeParticipants.d.ts +47 -0
- package/dist/methods/participants/removeParticipants.d.ts.map +1 -0
- package/dist/methods/permissions/index.d.ts +4 -0
- package/dist/methods/permissions/index.d.ts.map +1 -0
- package/dist/methods/permissions/launchPermissions.d.ts +7 -0
- package/dist/methods/permissions/launchPermissions.d.ts.map +1 -0
- package/dist/methods/permissions/updateParticipantPermission.d.ts +25 -0
- package/dist/methods/permissions/updateParticipantPermission.d.ts.map +1 -0
- package/dist/methods/permissions/updatePermissionConfig.d.ts +22 -0
- package/dist/methods/permissions/updatePermissionConfig.d.ts.map +1 -0
- package/dist/methods/polls/handleCreatePoll.d.ts +39 -0
- package/dist/methods/polls/handleCreatePoll.d.ts.map +1 -0
- package/dist/methods/polls/handleEndPoll.d.ts +34 -0
- package/dist/methods/polls/handleEndPoll.d.ts.map +1 -0
- package/dist/methods/polls/handleVotePoll.d.ts +39 -0
- package/dist/methods/polls/handleVotePoll.d.ts.map +1 -0
- package/dist/methods/polls/index.d.ts +4 -0
- package/dist/methods/polls/index.d.ts.map +1 -0
- package/dist/methods/polls/launchPoll.d.ts +22 -0
- package/dist/methods/polls/launchPoll.d.ts.map +1 -0
- package/dist/methods/polls/pollUpdated.d.ts +38 -0
- package/dist/methods/polls/pollUpdated.d.ts.map +1 -0
- package/dist/methods/prejoin/handleCreateRoom.d.ts +77 -0
- package/dist/methods/prejoin/handleCreateRoom.d.ts.map +1 -0
- package/dist/methods/prejoin/handleJoinRoom.d.ts +56 -0
- package/dist/methods/prejoin/handleJoinRoom.d.ts.map +1 -0
- package/dist/methods/prejoin/index.d.ts +5 -0
- package/dist/methods/prejoin/index.d.ts.map +1 -0
- package/dist/methods/recording/checkPauseState.d.ts +34 -0
- package/dist/methods/recording/checkPauseState.d.ts.map +1 -0
- package/dist/methods/recording/checkResumeState.d.ts +30 -0
- package/dist/methods/recording/checkResumeState.d.ts.map +1 -0
- package/dist/methods/recording/confirmRecording.d.ts +46 -0
- package/dist/methods/recording/confirmRecording.d.ts.map +1 -0
- package/dist/methods/recording/launchRecording.d.ts +56 -0
- package/dist/methods/recording/launchRecording.d.ts.map +1 -0
- package/dist/methods/recording/recordPauseTimer.d.ts +31 -0
- package/dist/methods/recording/recordPauseTimer.d.ts.map +1 -0
- package/dist/methods/recording/recordResumeTimer.d.ts +29 -0
- package/dist/methods/recording/recordResumeTimer.d.ts.map +1 -0
- package/dist/methods/recording/recordStartTimer.d.ts +45 -0
- package/dist/methods/recording/recordStartTimer.d.ts.map +1 -0
- package/dist/methods/recording/recordUpdateTimer.d.ts +29 -0
- package/dist/methods/recording/recordUpdateTimer.d.ts.map +1 -0
- package/dist/methods/recording/startRecording.d.ts +122 -0
- package/dist/methods/recording/startRecording.d.ts.map +1 -0
- package/dist/methods/recording/stopRecording.d.ts +36 -0
- package/dist/methods/recording/stopRecording.d.ts.map +1 -0
- package/dist/methods/recording/timeLeftRecording.d.ts +13 -0
- package/dist/methods/recording/timeLeftRecording.d.ts.map +1 -0
- package/dist/methods/recording/updateRecording.d.ts +49 -0
- package/dist/methods/recording/updateRecording.d.ts.map +1 -0
- package/dist/methods/requests/hostRequestResponse.d.ts +33 -0
- package/dist/methods/requests/hostRequestResponse.d.ts.map +1 -0
- package/dist/methods/requests/index.d.ts +2 -0
- package/dist/methods/requests/index.d.ts.map +1 -0
- package/dist/methods/requests/launchRequests.d.ts +22 -0
- package/dist/methods/requests/launchRequests.d.ts.map +1 -0
- package/dist/methods/requests/respondToRequests.d.ts +38 -0
- package/dist/methods/requests/respondToRequests.d.ts.map +1 -0
- package/dist/methods/settings/index.d.ts +3 -0
- package/dist/methods/settings/index.d.ts.map +1 -0
- package/dist/methods/settings/launchSettings.d.ts +22 -0
- package/dist/methods/settings/launchSettings.d.ts.map +1 -0
- package/dist/methods/settings/modifySettings.d.ts +45 -0
- package/dist/methods/settings/modifySettings.d.ts.map +1 -0
- package/dist/methods/socketReceive/allMembers.d.ts +117 -0
- package/dist/methods/socketReceive/allMembers.d.ts.map +1 -0
- package/dist/methods/socketReceive/allMembersRest.d.ts +122 -0
- package/dist/methods/socketReceive/allMembersRest.d.ts.map +1 -0
- package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts +24 -0
- package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts.map +1 -0
- package/dist/methods/socketReceive/banParticipant.d.ts +44 -0
- package/dist/methods/socketReceive/banParticipant.d.ts.map +1 -0
- package/dist/methods/socketReceive/controlMediaHost.d.ts +62 -0
- package/dist/methods/socketReceive/controlMediaHost.d.ts.map +1 -0
- package/dist/methods/socketReceive/disconnect.d.ts +24 -0
- package/dist/methods/socketReceive/disconnect.d.ts.map +1 -0
- package/dist/methods/socketReceive/disconnectUserSelf.d.ts +29 -0
- package/dist/methods/socketReceive/disconnectUserSelf.d.ts.map +1 -0
- package/dist/methods/socketReceive/getDomains.d.ts +48 -0
- package/dist/methods/socketReceive/getDomains.d.ts.map +1 -0
- package/dist/methods/socketReceive/meetingEnded.d.ts +27 -0
- package/dist/methods/socketReceive/meetingEnded.d.ts.map +1 -0
- package/dist/methods/socketReceive/meetingStillThere.d.ts +19 -0
- package/dist/methods/socketReceive/meetingStillThere.d.ts.map +1 -0
- package/dist/methods/socketReceive/panelistReceiveMethods.d.ts +66 -0
- package/dist/methods/socketReceive/panelistReceiveMethods.d.ts.map +1 -0
- package/dist/methods/socketReceive/participantRequested.d.ts +28 -0
- package/dist/methods/socketReceive/participantRequested.d.ts.map +1 -0
- package/dist/methods/socketReceive/permissionReceiveMethods.d.ts +23 -0
- package/dist/methods/socketReceive/permissionReceiveMethods.d.ts.map +1 -0
- package/dist/methods/socketReceive/personJoined.d.ts +24 -0
- package/dist/methods/socketReceive/personJoined.d.ts.map +1 -0
- package/dist/methods/socketReceive/producerMediaClosed.d.ts +66 -0
- package/dist/methods/socketReceive/producerMediaClosed.d.ts.map +1 -0
- package/dist/methods/socketReceive/producerMediaPaused.d.ts +70 -0
- package/dist/methods/socketReceive/producerMediaPaused.d.ts.map +1 -0
- package/dist/methods/socketReceive/producerMediaResumed.d.ts +53 -0
- package/dist/methods/socketReceive/producerMediaResumed.d.ts.map +1 -0
- package/dist/methods/socketReceive/reInitiateRecording.d.ts +33 -0
- package/dist/methods/socketReceive/reInitiateRecording.d.ts.map +1 -0
- package/dist/methods/socketReceive/receiveMessage.d.ts +36 -0
- package/dist/methods/socketReceive/receiveMessage.d.ts.map +1 -0
- package/dist/methods/socketReceive/recordingNotice.d.ts +98 -0
- package/dist/methods/socketReceive/recordingNotice.d.ts.map +1 -0
- package/dist/methods/socketReceive/roomRecordParams.d.ts +60 -0
- package/dist/methods/socketReceive/roomRecordParams.d.ts.map +1 -0
- package/dist/methods/socketReceive/screenProducerId.d.ts +36 -0
- package/dist/methods/socketReceive/screenProducerId.d.ts.map +1 -0
- package/dist/methods/socketReceive/startRecords.d.ts +31 -0
- package/dist/methods/socketReceive/startRecords.d.ts.map +1 -0
- package/dist/methods/socketReceive/stoppedRecording.d.ts +24 -0
- package/dist/methods/socketReceive/stoppedRecording.d.ts.map +1 -0
- package/dist/methods/socketReceive/translationReceiveMethods.d.ts +227 -0
- package/dist/methods/socketReceive/translationReceiveMethods.d.ts.map +1 -0
- package/dist/methods/socketReceive/updateConsumingDomains.d.ts +60 -0
- package/dist/methods/socketReceive/updateConsumingDomains.d.ts.map +1 -0
- package/dist/methods/socketReceive/updateMediaSettings.d.ts +28 -0
- package/dist/methods/socketReceive/updateMediaSettings.d.ts.map +1 -0
- package/dist/methods/socketReceive/updatedCoHost.d.ts +38 -0
- package/dist/methods/socketReceive/updatedCoHost.d.ts.map +1 -0
- package/dist/methods/socketReceive/userWaiting.d.ts +30 -0
- package/dist/methods/socketReceive/userWaiting.d.ts.map +1 -0
- package/dist/methods/stream/clickAudio.d.ts +71 -0
- package/dist/methods/stream/clickAudio.d.ts.map +1 -0
- package/dist/methods/stream/clickChat.d.ts +11 -0
- package/dist/methods/stream/clickChat.d.ts.map +1 -0
- package/dist/methods/stream/clickScreenShare.d.ts +45 -0
- package/dist/methods/stream/clickScreenShare.d.ts.map +1 -0
- package/dist/methods/stream/clickVideo.d.ts +101 -0
- package/dist/methods/stream/clickVideo.d.ts.map +1 -0
- package/dist/methods/stream/index.d.ts +5 -0
- package/dist/methods/stream/index.d.ts.map +1 -0
- package/dist/methods/stream/switchAudio.d.ts +40 -0
- package/dist/methods/stream/switchAudio.d.ts.map +1 -0
- package/dist/methods/stream/switchVideo.d.ts +56 -0
- package/dist/methods/stream/switchVideo.d.ts.map +1 -0
- package/dist/methods/stream/switchVideoAlt.d.ts +55 -0
- package/dist/methods/stream/switchVideoAlt.d.ts.map +1 -0
- package/dist/methods/utils/SoundPlayer.d.ts +19 -0
- package/dist/methods/utils/SoundPlayer.d.ts.map +1 -0
- package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts +30 -0
- package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts.map +1 -0
- package/dist/methods/utils/createResponseJoinRoom.d.ts +24 -0
- package/dist/methods/utils/createResponseJoinRoom.d.ts.map +1 -0
- package/dist/methods/utils/createRoomOnMediaSFU.d.ts +28 -0
- package/dist/methods/utils/createRoomOnMediaSFU.d.ts.map +1 -0
- package/dist/methods/utils/formatNumber.d.ts +21 -0
- package/dist/methods/utils/formatNumber.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomMessages.d.ts +11 -0
- package/dist/methods/utils/generateRandomMessages.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomParticipants.d.ts +10 -0
- package/dist/methods/utils/generateRandomParticipants.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomPolls.d.ts +7 -0
- package/dist/methods/utils/generateRandomPolls.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomRequestList.d.ts +10 -0
- package/dist/methods/utils/generateRandomRequestList.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomWaitingRoomList.d.ts +4 -0
- package/dist/methods/utils/generateRandomWaitingRoomList.d.ts.map +1 -0
- package/dist/methods/utils/getModalPosition.d.ts +7 -0
- package/dist/methods/utils/getModalPosition.d.ts.map +1 -0
- package/dist/methods/utils/getOverlayPosition.d.ts +22 -0
- package/dist/methods/utils/getOverlayPosition.d.ts.map +1 -0
- package/dist/methods/utils/getParticipantMedia.d.ts +55 -0
- package/dist/methods/utils/getParticipantMedia.d.ts.map +1 -0
- package/dist/methods/utils/headless/getCurrentParams.d.ts +27 -0
- package/dist/methods/utils/headless/getCurrentParams.d.ts.map +1 -0
- package/dist/methods/utils/headless/getMediaStreams.d.ts +96 -0
- package/dist/methods/utils/headless/getMediaStreams.d.ts.map +1 -0
- package/dist/methods/utils/headless/getRoomReadiness.d.ts +25 -0
- package/dist/methods/utils/headless/getRoomReadiness.d.ts.map +1 -0
- package/dist/methods/utils/headless/headlessTypes.d.ts +89 -0
- package/dist/methods/utils/headless/headlessTypes.d.ts.map +1 -0
- package/dist/methods/utils/headless/index.d.ts +29 -0
- package/dist/methods/utils/headless/index.d.ts.map +1 -0
- package/dist/methods/utils/headless/mediaPermissions.d.ts +53 -0
- package/dist/methods/utils/headless/mediaPermissions.d.ts.map +1 -0
- package/dist/methods/utils/headless/mediaProduction.d.ts +177 -0
- package/dist/methods/utils/headless/mediaProduction.d.ts.map +1 -0
- package/dist/methods/utils/headless/moderation.d.ts +157 -0
- package/dist/methods/utils/headless/moderation.d.ts.map +1 -0
- package/dist/methods/utils/headless/participantState.d.ts +128 -0
- package/dist/methods/utils/headless/participantState.d.ts.map +1 -0
- package/dist/methods/utils/headless/playback.d.ts +106 -0
- package/dist/methods/utils/headless/playback.d.ts.map +1 -0
- package/dist/methods/utils/headless/roomActions.d.ts +88 -0
- package/dist/methods/utils/headless/roomActions.d.ts.map +1 -0
- package/dist/methods/utils/headless/sessionControls.d.ts +159 -0
- package/dist/methods/utils/headless/sessionControls.d.ts.map +1 -0
- package/dist/methods/utils/headless/sessionExtras.d.ts +291 -0
- package/dist/methods/utils/headless/sessionExtras.d.ts.map +1 -0
- package/dist/methods/utils/headless/sessionFeatures.d.ts +159 -0
- package/dist/methods/utils/headless/sessionFeatures.d.ts.map +1 -0
- package/dist/methods/utils/headless/viewerSession.d.ts +125 -0
- package/dist/methods/utils/headless/viewerSession.d.ts.map +1 -0
- package/dist/methods/utils/headless/virtualBackground.d.ts +72 -0
- package/dist/methods/utils/headless/virtualBackground.d.ts.map +1 -0
- package/dist/methods/utils/initialValuesState.d.ts +388 -0
- package/dist/methods/utils/initialValuesState.d.ts.map +1 -0
- package/dist/methods/utils/joinRoomOnMediaSFU.d.ts +56 -0
- package/dist/methods/utils/joinRoomOnMediaSFU.d.ts.map +1 -0
- package/dist/methods/utils/liveSubtitle.d.ts +36 -0
- package/dist/methods/utils/liveSubtitle.d.ts.map +1 -0
- package/dist/methods/utils/meetingTimeRemaining.d.ts +15 -0
- package/dist/methods/utils/meetingTimeRemaining.d.ts.map +1 -0
- package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts +35 -0
- package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts.map +1 -0
- package/dist/methods/utils/producer/aParams.d.ts +3 -0
- package/dist/methods/utils/producer/aParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/hParams.d.ts +3 -0
- package/dist/methods/utils/producer/hParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/screenParams.d.ts +3 -0
- package/dist/methods/utils/producer/screenParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/vParams.d.ts +3 -0
- package/dist/methods/utils/producer/vParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/videoCaptureConstraints.d.ts +145 -0
- package/dist/methods/utils/producer/videoCaptureConstraints.d.ts.map +1 -0
- package/dist/methods/utils/resolveMediaSFURoomApi.d.ts +4 -0
- package/dist/methods/utils/resolveMediaSFURoomApi.d.ts.map +1 -0
- package/dist/methods/utils/sleep.d.ts +21 -0
- package/dist/methods/utils/sleep.d.ts.map +1 -0
- package/dist/methods/utils/translationLanguages.d.ts +100 -0
- package/dist/methods/utils/translationLanguages.d.ts.map +1 -0
- package/dist/methods/utils/validateAlphanumeric.d.ts +21 -0
- package/dist/methods/utils/validateAlphanumeric.d.ts.map +1 -0
- package/dist/methods/utils/virtualBackgroundCompositor.d.ts +21 -0
- package/dist/methods/utils/virtualBackgroundCompositor.d.ts.map +1 -0
- package/dist/methods/utils/webrtc.d.ts +18 -0
- package/dist/methods/utils/webrtc.d.ts.map +1 -0
- package/dist/methods/waiting/index.d.ts +2 -0
- package/dist/methods/waiting/index.d.ts.map +1 -0
- package/dist/methods/waiting/launchWaiting.d.ts +23 -0
- package/dist/methods/waiting/launchWaiting.d.ts.map +1 -0
- package/dist/methods/waiting/respondToWaiting.d.ts +40 -0
- package/dist/methods/waiting/respondToWaiting.d.ts.map +1 -0
- package/dist/methods/welcome/handleWelcomeRequest.d.ts +47 -0
- package/dist/methods/welcome/handleWelcomeRequest.d.ts.map +1 -0
- package/dist/methods/welcome/index.d.ts +3 -0
- package/dist/methods/welcome/index.d.ts.map +1 -0
- package/dist/methods/whiteboard/captureCanvasStream.d.ts +38 -0
- package/dist/methods/whiteboard/captureCanvasStream.d.ts.map +1 -0
- package/dist/methods/whiteboard/handleStartWhiteboard.d.ts +31 -0
- package/dist/methods/whiteboard/handleStartWhiteboard.d.ts.map +1 -0
- package/dist/methods/whiteboard/handleStopWhiteboard.d.ts +25 -0
- package/dist/methods/whiteboard/handleStopWhiteboard.d.ts.map +1 -0
- package/dist/methods/whiteboard/index.d.ts +5 -0
- package/dist/methods/whiteboard/index.d.ts.map +1 -0
- package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts +23 -0
- package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts.map +1 -0
- package/dist/producers/producerEmits/joinConRoom.d.ts +54 -0
- package/dist/producers/producerEmits/joinConRoom.d.ts.map +1 -0
- package/dist/producers/producerEmits/joinLocalRoom.d.ts +30 -0
- package/dist/producers/producerEmits/joinLocalRoom.d.ts.map +1 -0
- package/dist/producers/producerEmits/joinRoom.d.ts +35 -0
- package/dist/producers/producerEmits/joinRoom.d.ts.map +1 -0
- package/dist/readme/mediasfu-platform-capabilities.webp +0 -0
- package/dist/sockets/SocketManager.d.ts +102 -0
- package/dist/sockets/SocketManager.d.ts.map +1 -0
- package/dist/translationConsumerSwitch-C20MfNNq.cjs +509 -0
- package/dist/translationConsumerSwitch-C20MfNNq.cjs.map +1 -0
- package/dist/translationConsumerSwitch-zKuS5wgH.js +510 -0
- package/dist/translationConsumerSwitch-zKuS5wgH.js.map +1 -0
- package/dist/types/index.cjs +85 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +85 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/shared-base-types.d.ts +656 -0
- package/dist/types/shared-base-types.d.ts.map +1 -0
- package/dist/types/types.d.ts +124 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js +5392 -0
- package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js.map +1 -0
- package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs +5391 -0
- package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs.map +1 -0
- package/dist/validateAlphanumeric-DKn5BsUP.cjs +15 -0
- package/dist/validateAlphanumeric-DKn5BsUP.cjs.map +1 -0
- package/dist/validateAlphanumeric-Dk1JB80W.js +16 -0
- package/dist/validateAlphanumeric-Dk1JB80W.js.map +1 -0
- package/package.json +106 -99
- package/src/ProducerClient/producerClientEmits/createDeviceClient.ts +1 -2
- package/src/ProducerClient/producerClientEmits/updateRoomParametersClient.ts +1 -1
- package/src/consumers/connectIps.ts +1 -1
- package/src/consumers/connectRecvTransport.ts +1 -1
- package/src/consumers/connectSendTransport.ts +1 -1
- package/src/consumers/connectSendTransportAudio.ts +1 -1
- package/src/consumers/connectSendTransportScreen.ts +5 -2
- package/src/consumers/connectSendTransportVideo.ts +1 -1
- package/src/consumers/createSendTransport.ts +34 -29
- package/src/consumers/disconnectSendTransportAudio.ts +1 -1
- package/src/consumers/disconnectSendTransportScreen.ts +1 -1
- package/src/consumers/disconnectSendTransportVideo.ts +1 -1
- package/src/consumers/index.ts +61 -0
- package/src/consumers/resumeSendTransportAudio.ts +1 -1
- package/src/consumers/signalNewConsumerTransport.ts +1 -2
- package/src/consumers/socketReceiveMethods/joinConsumeRoom.ts +1 -1
- package/src/consumers/socketReceiveMethods/newPipeProducer.ts +1 -1
- package/src/consumers/streamSuccessAudio.ts +1 -2
- package/src/consumers/streamSuccessAudioSwitch.ts +1 -2
- package/src/consumers/streamSuccessVideo.ts +35 -6
- package/src/index.native.ts +24 -1
- package/src/index.ts +7 -0
- package/src/methods/exit/confirmExit.ts +11 -4
- package/src/methods/socketReceive/getDomains.ts +1 -1
- package/src/methods/utils/getParticipantMedia.ts +112 -0
- package/src/methods/utils/headless/getCurrentParams.ts +44 -0
- package/src/methods/utils/headless/getMediaStreams.ts +256 -0
- package/src/methods/utils/headless/getRoomReadiness.ts +49 -0
- package/src/methods/utils/headless/headlessTypes.ts +102 -0
- package/src/methods/utils/headless/index.ts +28 -0
- package/src/methods/utils/headless/mediaPermissions.ts +124 -0
- package/src/methods/utils/headless/mediaProduction.ts +505 -0
- package/src/methods/utils/headless/moderation.ts +455 -0
- package/src/methods/utils/headless/participantState.ts +254 -0
- package/src/methods/utils/headless/playback.ts +336 -0
- package/src/methods/utils/headless/roomActions.ts +230 -0
- package/src/methods/utils/headless/sessionControls.ts +335 -0
- package/src/methods/utils/headless/sessionExtras.ts +593 -0
- package/src/methods/utils/headless/sessionFeatures.ts +480 -0
- package/src/methods/utils/headless/viewerSession.ts +246 -0
- package/src/methods/utils/headless/virtualBackground.ts +280 -0
- package/src/methods/utils/resolveMediaSFURoomApi.ts +2 -2
- package/src/methods/utils/virtualBackgroundCompositor.ts +53 -0
- package/src/methods/whiteboard/captureCanvasStream.ts +2 -2
- package/src/producers/producerEmits/joinConRoom.ts +1 -1
- package/src/producers/producerEmits/joinRoom.ts +1 -1
- package/src/types/index.ts +1 -0
- 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":";AAoBO,SAAS,uBAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF,GAA2D;AACzD,QAAM,WAAW,MAAM,QAAQ,eAAe,IAAI,kBAAkB,CAAA;AACpE,QAAM,UAAU,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAA;AAEjE,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,YAAY,SAAS,QAAQ,SAAS,MAAM,CAAC;AAElF,QAAM,cAAc,SAAS,MAAM,GAAG,OAAO,EAAE,IAAI,CAAC,QAAQ,WAAW;AAAA,IACrE;AAAA,IACA;AAAA,EAAA,EACA;AAEF,QAAM,aAAa,QAAQ,IAAI,CAAC,QAAQ,WAAW;AAAA,IACjD;AAAA,IACA;AAAA,EAAA,EACA;AAEF,SAAO,EAAE,aAAa,WAAA;AACxB;AC0FO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyD;AACvD,QAAM,mBACH,YAAY,OAAO,CAAC,eACjB,YAAY,QAAQ,CAAC,eAAe,CAAC,mBACtC,gBAAgB;AAErB,MAAI,CAAC,kBAAkB;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,OAAO,gBAAgB;AACrC,WAAO;AAAA,EACT;AAEA,QAAM,QACH,YAAY,OAAO,kBAChB,YAAY,OAAO,cAAc;AAEvC,SAAO,QAAQ,UAAU;AAC3B;AAKO,SAAS,uBAA0F;AAAA,EACxG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoD;AAClD,MAAI,YAAY,KAAK;AACnB,WAAO,kBAAkB,gBAAgB,gBAAgB;AAAA,EAC3D;AAEA,QAAM,iBAAiB,MAAM,QAAQ,aAAa,IAAI,gBAAgB,CAAA;AACtE,QAAM,UAAU,eAAe,KAAK,CAAC,WAAW,OAAO,eAAe,WAAW;AACjF,SAAO,SAAS,UAAU;AAC5B;AAKO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,GAAiD;AAC/C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAKO,SAAS,sBAAyF;AAAA,EACvG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgE;AAC9D,QAAM,OAAO,0BAA0B;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,MAAI,SAAS,cAAc;AACzB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,eAAe,YAAY;AAAA,MAChC,MAAM;AAAA,MACN,kBAAkB,eAAe;AAAA,MACjC,aAAa,kBAAkB,gBAAgB,gBAAgB;AAAA,MAC/D,UAAU;AAAA,MACV,OAAO,qBAAqB;AAAA,QAC1B,QAAQ;AAAA,QACR,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,MAAA,CACnB;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,SAAS,SAAS;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,YAAY;AAAA,MACjB,MAAM;AAAA,MACN,OAAO,qBAAqB;AAAA,QAC1B,QAAQ;AAAA,QACR,mBAAmB,YAAY;AAAA,QAC/B,kBAAkB;AAAA,MAAA,CACnB;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO,qBAAqB;AAAA,QAC1B,QAAQ;AAAA,QACR,mBAAmB,YAAY;AAAA,QAC/B,kBAAkB;AAAA,MAAA,CACnB;AAAA,IAAA;AAAA,EAEL;AAEA,QAAM,aAAa,uBAAuB;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO,qBAAqB;AAAA,QAC1B,QAAQ;AAAA,QACR,mBAAmB,YAAY;AAAA,QAC/B,kBAAkB;AAAA,MAAA,CACnB;AAAA,IAAA;AAAA,EAEL;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK,eAAe,YAAY;AAAA,IAChC,MAAM;AAAA,IACN,kBAAkB,eAAe;AAAA,IACjC,aAAa;AAAA,IACb,UAAU,WAAW;AAAA,IACrB,OAAO,qBAAqB;AAAA,MAC1B,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,IAAA,CACnB;AAAA,EAAA;AAEL;AAKO,SAAS,6BAA6B;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiE;AAC/D,SAAO;AAAA,IACL,KAAK,gBAAgB,YAAY;AAAA,IACjC,MAAM;AAAA,IACN,kBAAkB,gBAAgB;AAAA,IAClC,aAAa,SAAS,aAAa,YAAY,UAAU;AAAA,IACzD,kBAAkB,wBAAwB,SAAS,QAAQ;AAAA,IAC3D,UAAU;AAAA,IACV,OAAO,qBAAqB;AAAA,MAC1B,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,IAAA,CACnB;AAAA,EAAA;AAEL;AAMO,SAAS,8BAGd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gCAAgC;AAClC,GAA4E;AAC1E,QAAM,mBAAmB,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAA;AACtE,QAAM,mBAAmB,MAAM,QAAQ,eAAe,IAAI,kBAAkB,CAAA;AAC5E,QAAM,0BAA0B,MAAM,QAAQ,kBAAkB,IAAI,qBAAqB,CAAA;AAEzF,QAAM,mBAAmB,qBAAqB,CAAC;AAC/C,QAAM,mBACJ,sBAAsB,UAAW,iCAAiC;AAEpE,MAAI,yBAAyB;AAC7B,QAAM,cAAc,iBAAA;AACpB,OAAK,gBAAgB,cAAc,CAAC,kBAAkB,sBAAsB,SAAS;AACnF,6BAAyB;AAAA,EAC3B;AAEA,MAAI,CAAC,kBAAkB;AACrB,QAAI,cAAc,cAAc;AAC9B,aAAO;AAAA,QACL;AAAA,QACA,mBAAmB;AAAA,QACnB,+BAA+B;AAAA,QAC/B;AAAA,QACA,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,MAAA;AAAA,IAEtB;AAEA,UAAMA,QAAO,iBAAiB,KAAK,CAAC,gBAAgB,YAAY,YAAY,GAAG,KAAK;AAEpF,WAAO;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,MACnB,+BAA+B;AAAA,MAC/B;AAAA,MACA,MAAAA;AAAAA,MACA,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,kBAAkBA,OAAM,QAAQ;AAAA,IAAA;AAAA,EAEpC;AAEA,MAAI,OAAiB;AACrB,MAAI,aAAkB;AAEtB,MAAI,QAAQ;AACV,WAAO,EAAE,MAAM,QAAQ,SAAS,IAAI,SAAS,GAAA;AAC7C,iBAAa;AAAA,EACf,OAAO;AACL,WACE,iBAAiB;AAAA,MACf,CAAC,gBAAgB,YAAY,aAAa,YAAY,YAAY,aAAa;AAAA,IAAA,KAC5E;AAEP,QAAI,kBAAkB;AACpB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,MAAA;AAEX,mBAAa,EAAE,YAAY,mBAAA;AAAA,IAC7B;AAEA,QAAI,SAAS,MAAM;AACjB,aAAO,iBAAiB,KAAK,CAAC,gBAAgB,YAAY,aAAa,IAAI,KAAK;AAAA,IAClF;AAEA,QAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,EAAE,SAAS,kBAAkB,GAAG;AACjE,UAAI,wBAAwB,WAAW,GAAG;AACxC,qBACE,iBAAiB,KAAK,CAAC,WAAW,OAAO,eAAe,MAAM,QAAQ,KAAK;AAAA,MAC/E,OAAO;AACL,qBAAa,wBAAwB,CAAC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,mBAAmB;AAAA,IACnB,+BAA+B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,QAAQ,KAAK,YAAY,QAAQ;AAAA,IACrD,kBAAkB,MAAM,QAAQ;AAAA,EAAA;AAEpC;AChZO,MAAM,4BAA4B,CACvC,aACA,eACY;AACZ,QAAM;AAAA,IACJ,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,mBAAmB,CAAA;AAAA,IACnB,eAAe,CAAA;AAAA,IACf,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,gBAAgB,CAAA;AAAA,IAChB,SAAS;AAAA,EAAA,IACP;AAEJ,MAAI,CAAC,uBAAuB,mBAAmB;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,aAAa,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG;AACvD,QAAM,gBAAgB,MAAM,SAAS;AAErC,MAAI,YAAY,KAAK;AACnB,QAAI,cAAc,aAAa,eAAe;AAC5C,aAAO;AAAA,IACT;AAEA,QAAI,cAAc,gBAAgB,eAAe;AAC/C,YAAM,aAAa,cAAc;AAAA,QAAK,CAAC,MACrC,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,MAAA;AAEjC,YAAM,kBAAkB,aAAa,cAAc,QAAQ,UAAU,IAAI;AACzE,YAAM,cAAc,oBAAoB;AAExC,UAAI,aAAa;AACf,eAAO,oBAAoB;AAAA,MAC7B;AAEA,UAAI,gBAAgB,IAAI;AACtB,eAAO;AAAA,MACT;AAEA,aAAO,gBAAgB,mBAAmB,oBAAoB;AAAA,IAChE;AAAA,EACF;AAEA,SAAO,iBAAiB,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW;AAC5D;AAEO,MAAM,wBAAwB,OAAO;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF,MAAmD;AACjD,MAAI;AACF,UAAM,EAAE,uBAAuB;AAE/B,QAAI,aAAa,CAAC,0BAA0B,WAAW,UAAU,GAAG;AAClE;AAAA,IACF;AAEA,UAAM,YAAY,mBAAmB;AAAA,MACnC,CAAC,MAAM,EAAE,eAAe,sBAAsB,EAAE,UAAU,SAAS;AAAA,IAAA;AAGrE,QAAI,CAAC,WAAW,UAAU;AACxB;AAAA,IACF;AAEA,QAAI,UAAU,SAAS,OAAO;AAC5B,gBAAU,SAAS,MAAM,UAAU;AAAA,IACrC;AAEA,QAAI,UAAU,SAAS,QAAQ;AAC7B;AAAA,IACF;AAEA,cAAU,SAAS,MAAA;AAEnB,cAAU,SAAS;AAAA,MACjB;AAAA,MACA,EAAE,kBAAkB,UAAU,0BAAA;AAAA,MAC9B,YAAY;AAAA,MAAC;AAAA,IAAA;AAAA,EAEjB,SAAS,OAAO;AACd,YAAQ,MAAM,wDAAwD,KAAK;AAAA,EAC7E;AACF;AAEO,MAAM,yBAAyB,OAAO;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,MAAoD;AAClD,MAAI;AACF,UAAM,EAAE,uBAAuB;AAE/B,QAAI,aAAa,CAAC,0BAA0B,WAAW,UAAU,GAAG;AAClE;AAAA,IACF;AAEA,UAAM,YAAY,mBAAmB;AAAA,MACnC,CAAC,MAAM,EAAE,eAAe,sBAAsB,EAAE,UAAU,SAAS;AAAA,IAAA;AAGrE,QAAI,CAAC,WAAW,UAAU;AACxB;AAAA,IACF;AAEA,QAAI,CAAC,UAAU,SAAS,QAAQ;AAC9B,UAAI,UAAU,SAAS,OAAO;AAC5B,kBAAU,SAAS,MAAM,UAAU;AAAA,MACrC;AACA;AAAA,IACF;AAEA,cAAU,SAAS;AAAA,MACjB;AAAA,MACA,EAAE,kBAAkB,UAAU,0BAAA;AAAA,MAC9B,OAAO,EAAE,QAAA,MAAoC;AAC3C,YAAI,SAAS;AACX,cAAI,UAAU,SAAS,OAAO;AAC5B,sBAAU,SAAS,MAAM,UAAU;AAAA,UACrC;AACA,oBAAU,SAAS,OAAA;AAAA,QACrB;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ,SAAS,OAAO;AACd,YAAQ,MAAM,yDAAyD,KAAK;AAAA,EAC9E;AACF;AAEO,MAAM,mCAAmC,CAC9C,WACA,oBACA,2BAC2G;AAC3G,QAAM,kBAAkB,uBAAuB,IAAI,SAAS;AAE5D,MAAI,iBAAiB;AACnB,UAAM,cAAc,mBAAmB;AAAA,MACrC,CAAC,MAAM,EAAE,eAAe,gBAAgB;AAAA,IAAA;AAG1C,QAAI,aAAa;AACf,aAAO;AAAA,QACL,WAAW;AAAA,QACX,UAAU,gBAAgB;AAAA,QAC1B,uBAAuB,gBAAgB;AAAA,QACvC,oBAAoB,gBAAgB;AAAA,MAAA;AAAA,IAExC;AAAA,EACF;AAEA,SAAO,EAAE,WAAW,MAAA;AACtB;AAEO,MAAM,gCAAgC,CAC3C,wBACA,uBAC8G;AAC9G,QAAM,UAAqH,CAAA;AAE3H,yBAAuB,QAAQ,CAAC,MAAM,cAAc;AAClD,UAAM,cAAc,mBAAmB;AAAA,MACrC,CAAC,MAAM,EAAE,eAAe,KAAK;AAAA,IAAA;AAG/B,QAAI,aAAa;AACf,cAAQ,KAAK;AAAA,QACX;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,MAAM,iCAAiC,CAC5C,WACA,oBACkB;AAClB,QAAM,SAAS,gBAAgB;AAAA,IAC7B,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,YAAY,SAAS,SAAS;AAAA,EAAA;AAEjE,SAAO,QAAQ,cAAc;AAC/B;AAEO,MAAM,2BAA2B,OAAO,YAAqE;AAClH,QAAM,EAAE,UAAU,wBAAwB,WAAA,IAAe;AACzD,MAAI;AACF,UAAM,EAAE,oBAAoB,yBAAA,IAA6B;AAEzD,QAAI,qBAAoC;AACxC,QAAI,wBAAuC;AAE3C,eAAW,CAAC,QAAQ,OAAO,KAAK,OAAO,QAAQ,sBAAsB,GAAG;AACtE,UAAI,WAAW,QAAQ,QAAQ,GAAG;AAChC,gCAAwB,QAAQ,QAAQ;AACxC,6BAAqB;AACrB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,uBAAuB;AAC1B,aAAO;AAAA,IACT;AAEA,UAAM,iBAAiB,mBAAmB;AAAA,MACxC,CAAC,MAAM,EAAE,eAAe;AAAA,IAAA;AAG1B,QAAI,mBAAmB,IAAI;AACzB,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,mBAAmB,cAAc;AAEnD,QAAI,UAAU,WAAW,UAAU,UAAU;AAC3C,gBAAU,QAAQ;AAAA,QAChB;AAAA,QACA,EAAE,kBAAkB,UAAU,0BAAA;AAAA,QAC9B,MAAM;AAAA,QAAC;AAAA,MAAA;AAAA,IAEX;AAEA,QAAI,UAAU,UAAU;AACtB,gBAAU,SAAS,MAAA;AAAA,IACrB;AAEA,UAAM,oBAAoB,mBAAmB,OAAO,CAAC,GAAG,MAAM,MAAM,cAAc;AAClF,6BAAyB,iBAAiB;AAE1C,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,4DAA4D,KAAK;AAC/E,WAAO;AAAA,EACT;AACF;AAEO,MAAM,0CAA0C,OACrD,wBACA,uBACA,eACkB;AAClB,MAAI;AACF,UAAM,EAAE,uBAAuB;AAE/B,eAAW,CAAC,oBAAoB,OAAO,KAAK,OAAO,QAAQ,sBAAsB,GAAG;AAClF,YAAM,YAAY,sBAAsB,kBAAkB;AAC1D,UAAI,CAAC,UAAW;AAEhB,YAAM,WAAW,0BAA0B,WAAW,UAAU;AAChE,YAAM,iBAAiB,OAAO,KAAK,OAAO,EAAE,SAAS;AAErD,YAAM,mBAAmB,mBAAmB;AAAA,QAC1C,CAAC,MAAM,EAAE,eAAe,sBAAsB,EAAE,UAAU,SAAS;AAAA,MAAA;AAGrE,UAAI,CAAC,iBAAkB;AAEvB,UAAI,YAAY,gBAAgB;AAC9B,YAAI,CAAC,iBAAiB,SAAS,QAAQ;AACrC,gBAAM,sBAAsB;AAAA,YAC1B;AAAA,YACA;AAAA,YACA;AAAA,UAAA,CACD;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,wDAAwD,KAAK;AAAA,EAC7E;AACF;;;;;;;;;;;;;;;;"}
|