UNPKG

mediasfu-reactjs

Version:

MediaSFU Prebuilt ReactJS SDK - Compatible with React 18 & 19, TypeScript & JavaScript

1 lines 1.24 MB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@fortawesome/free-brands-svg-icons"),require("@fortawesome/free-solid-svg-icons"),require("@fortawesome/react-fontawesome"),require("@mediapipe/selfie_segmentation"),require("mediasoup-client"),require("react"),require("react-dom"),require("react/jsx-runtime"),require("socket.io-client"),require("universal-cookie")):"function"==typeof define&&define.amd?define(["@fortawesome/free-brands-svg-icons","@fortawesome/free-solid-svg-icons","@fortawesome/react-fontawesome","@mediapipe/selfie_segmentation","mediasoup-client","React","ReactDOM","react/jsx-runtime","socket.io-client","universal-cookie"],t):"object"==typeof exports?exports.MediasfuReactJS=t(require("@fortawesome/free-brands-svg-icons"),require("@fortawesome/free-solid-svg-icons"),require("@fortawesome/react-fontawesome"),require("@mediapipe/selfie_segmentation"),require("mediasoup-client"),require("react"),require("react-dom"),require("react/jsx-runtime"),require("socket.io-client"),require("universal-cookie")):e.MediasfuReactJS=t(e.FontAwesome["free-brands-svg-icons"],e.FontAwesome["free-solid-svg-icons"],e.FontAwesome["react-fontawesome"],e.SelfieSegmentation,e.mediasoupClient,e.React,e.ReactDOM,e.React.jsxRuntime,e.io,e.UniversalCookie)}(this,(e,t,r,a,n,o,s,i,c,d)=>(()=>{"use strict";var l={63:e=>{e.exports=t},67:e=>{e.exports=d},156:e=>{e.exports=o},310:e=>{e.exports=i},318:e=>{e.exports=s},575:e=>{e.exports=r},609:t=>{t.exports=e},659:e=>{e.exports=n},884:e=>{e.exports=a},985:e=>{e.exports=c}},u={};function p(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={exports:{}};return l[e](r,r.exports,p),r.exports}p.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return p.d(t,{a:t}),t},p.d=(e,t)=>{for(var r in t)p.o(t,r)&&!p.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},p.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var m={};p.r(m),p.d(m,{AlertComponent:()=>Xo,AnimatedGradientBackground:()=>Vi,AnimatedIconButton:()=>Ti,Animations:()=>it,AudioCard:()=>pn,AudioGrid:()=>ht,BackgroundModal:()=>Hs,Borders:()=>dt,BreakoutRoomsModal:()=>Us,CardVideoDisplay:()=>ea,CoHostModal:()=>ds,Colors:()=>Me,ConfigureWhiteboardModal:()=>_s,ConfirmExitModal:()=>xs,ConfirmHereModal:()=>vs,ControlButtonsAltComponent:()=>ve,ControlButtonsComponent:()=>he,ControlButtonsComponentTouch:()=>Ce,DEFAULT_RENDER_MODE:()=>$i,DisplaySettingsModal:()=>is,EventSettingsModal:()=>cs,FlexibleGrid:()=>Ks,FlexibleVideo:()=>Xs,GlassmorphicContainer:()=>It,GlowContainer:()=>ji,GradientCard:()=>Ci,INLINE_RENDER_MODE:()=>Wi,LoadingModal:()=>Ko,MainAspectComponent:()=>ge,MainContainerComponent:()=>He,MainGridComponent:()=>Ee,MainScreenComponent:()=>$e,MediaSettingsModal:()=>ys,MediasfuAnimations:()=>st,MediasfuBorders:()=>ct,MediasfuBroadcast:()=>ui,MediasfuChat:()=>gi,MediasfuColors:()=>Pe,MediasfuConference:()=>mi,MediasfuGeneric:()=>li,MediasfuSpacing:()=>rt,MediasfuTypography:()=>nt,MediasfuWebinar:()=>pi,MeetingProgressTimer:()=>Ve,MenuModal:()=>as,MessagesModal:()=>bs,MiniAudio:()=>jt,MiniAudioPlayer:()=>yn,MiniCard:()=>sn,MiniCardAudio:()=>Si,ModernAlertComponent:()=>Ft,ModernAudioCard:()=>aa,ModernBackgroundModal:()=>Mr,ModernBreakoutRoomsModal:()=>Ir,ModernCoHostModal:()=>mr,ModernConfigureWhiteboardModal:()=>Ar,ModernConfirmExitModal:()=>yr,ModernConfirmHereModal:()=>xr,ModernControlButtonsComponent:()=>Ui,ModernDisplaySettingsModal:()=>ur,ModernEventSettingsModal:()=>pr,ModernFlexibleGrid:()=>Kr,ModernFlexibleVideo:()=>Xr,ModernLoadingModal:()=>At,ModernMainContainerComponent:()=>qi,ModernMediaSettingsModal:()=>br,ModernMediasfuGeneric:()=>Yo,ModernMeetingProgressTimer:()=>Zr,ModernMenuModal:()=>Lt,ModernMessagesModal:()=>hr,ModernMiniCard:()=>ra,ModernPagination:()=>$r,ModernParticipantsModal:()=>gr,ModernPollModal:()=>kr,ModernPreJoinPage:()=>wr,ModernRecordingModal:()=>ir,ModernRequestsModal:()=>dr,ModernTooltip:()=>Ie,ModernVideoCard:()=>ta,ModernWaitingModal:()=>lr,ModernWelcomePage:()=>Sr,NeumorphicContainer:()=>Pi,OtherGridComponent:()=>Be,Pagination:()=>Gs,ParticipantsModal:()=>hs,PollModal:()=>Ws,PreJoinPage:()=>Es,PremiumButton:()=>Nt,PremiumTextField:()=>Ai,PulseBorderContainer:()=>Mi,RecordingModal:()=>ns,RequestsModal:()=>os,SIDEBAR_RENDER_MODE:()=>Ei,Screenboard:()=>pt,ScreenboardModal:()=>mt,ShareEventModal:()=>Ss,ShimmerAvatar:()=>Li,ShimmerCard:()=>Di,ShimmerLoading:()=>Fi,ShimmerText:()=>Ni,SidebarPanel:()=>Bi,SoundPlayer:()=>To,Spacing:()=>at,StyledContainer:()=>Ii,SubAspectComponent:()=>We,Typography:()=>ot,VideoCard:()=>dn,WaitingRoomModal:()=>ss,WelcomePage:()=>ks,Whiteboard:()=>ut,aParams:()=>P,addVideosGrid:()=>Mn,allMembers:()=>$o,allMembersRest:()=>Eo,allWaitingRoomMembers:()=>uo,autoAdjust:()=>Gn,banParticipant:()=>mo,breakoutRoomUpdated:()=>no,calculateRowsAndColumns:()=>Pn,captureCanvasStream:()=>Uo,changeVids:()=>Tn,checkGrid:()=>Cn,checkLimitsAndMakeRequest:()=>oe,checkMediasfuURL:()=>se,checkPauseState:()=>W,checkPermission:()=>Oa,checkResumeState:()=>H,checkScreenShare:()=>Ja,clickAudio:()=>Va,clickChat:()=>Y,clickScreenShare:()=>Ba,clickVideo:()=>La,closeAndResize:()=>_n,compareActiveNames:()=>Fn,compareScreenStates:()=>Dn,confirmExit:()=>L,confirmRecording:()=>da,connectIps:()=>Qn,connectLocalIps:()=>S,connectLocalSocket:()=>ga,connectRecvTransport:()=>zn,connectSendTransport:()=>Wn,connectSendTransportAudio:()=>w,connectSendTransportScreen:()=>Sn,connectSendTransportVideo:()=>vn,connectSocket:()=>ma,consumerResume:()=>xn,controlMedia:()=>k,controlMediaHost:()=>So,createDeviceClient:()=>Na,createResponseJoinRoom:()=>Go,createRoomOnMediaSFU:()=>Rr,createSendTransport:()=>Nn,defaultModernStyleOptions:()=>Ri,disconnect:()=>Wo,disconnectSendTransportAudio:()=>$n,disconnectSendTransportScreen:()=>En,disconnectSendTransportVideo:()=>Bn,disconnectSocket:()=>ha,disconnectUserSelf:()=>wo,dispStreams:()=>Ya,formatNumber:()=>Zn,generatePageContent:()=>C,generateRandomMessages:()=>fi,generateRandomParticipants:()=>hi,generateRandomPolls:()=>xi,generateRandomRequestList:()=>bi,generateRandomWaitingRoomList:()=>yi,getDomains:()=>Io,getEstimate:()=>jn,getModalPosition:()=>T,getOverlayPosition:()=>F,getPipedProducersAlt:()=>On,getProducersPiped:()=>j,getRenderModeForContext:()=>Hi,getVideos:()=>gn,hParams:()=>M,handleCreatePoll:()=>to,handleEndPoll:()=>ao,handleVotePoll:()=>ro,hostRequestResponse:()=>Bo,initialValuesState:()=>me,injectModernAnimations:()=>Mt,joinConRoom:()=>f,joinConsumeRoom:()=>b,joinLocalRoom:()=>ie,joinRoom:()=>Z,joinRoomClient:()=>fa,joinRoomOnMediaSFU:()=>Q,launchBackground:()=>ii,launchBreakoutRooms:()=>ci,launchCoHost:()=>ei,launchConfigureWhiteboard:()=>di,launchConfirmExit:()=>la,launchDisplaySettings:()=>ti,launchMediaSettings:()=>ia,launchMenuModal:()=>Zs,launchMessages:()=>oi,launchParticipants:()=>ni,launchPoll:()=>si,launchRecording:()=>sa,launchRequests:()=>ai,launchSettings:()=>ri,launchWaiting:()=>Qs,meetingEnded:()=>Ro,meetingStillThere:()=>jo,meetingTimeRemaining:()=>Co,mergeStyleOptions:()=>wi,messageParticipants:()=>B,mixStreams:()=>Ga,modifyCoHostSettings:()=>D,modifyDisplaySettings:()=>N,modifySettings:()=>G,muteParticipants:()=>$,newPipeProducer:()=>x,onScreenChanges:()=>In,participantRequested:()=>ho,personJoined:()=>lo,pollUpdated:()=>eo,prepopulateUserMedia:()=>mn,processConsumerTransports:()=>Rn,processConsumerTransportsAudio:()=>_o,producerClosed:()=>v,producerMediaClosed:()=>vo,producerMediaPaused:()=>yo,producerMediaResumed:()=>xo,reInitiateRecording:()=>Mo,rePort:()=>hn,reUpdateInter:()=>Un,readjust:()=>kn,receiveAllPipedTransports:()=>Vn,receiveMessage:()=>ko,receiveRoomMessages:()=>Xn,recordPauseTimer:()=>O,recordResumeTimer:()=>U,recordStartTimer:()=>q,recordUpdateTimer:()=>z,recordingNotice:()=>Fo,removeParticipants:()=>E,reorderStreams:()=>Qa,requestScreenShare:()=>Za,respondToRequests:()=>_,respondToWaiting:()=>X,resumePauseAudioStreams:()=>qo,resumePauseStreams:()=>wn,resumeSendTransportAudio:()=>Ln,roomRecordParams:()=>po,screenParams:()=>I,screenProducerId:()=>fo,sendMessage:()=>V,signalNewConsumerTransport:()=>y,sleep:()=>An,startMeetingProgressTimer:()=>oo,startRecording:()=>ca,startRecords:()=>Po,startShareScreen:()=>Xa,stopRecording:()=>io,stopShareScreen:()=>Ka,stoppedRecording:()=>Vo,streamSuccessAudio:()=>Ea,streamSuccessAudioSwitch:()=>Ha,streamSuccessScreen:()=>Wa,streamSuccessVideo:()=>$a,styleOptionsToCSS:()=>ki,switchAudio:()=>K,switchUserAudio:()=>Jn,switchUserVideo:()=>Kn,switchUserVideoAlt:()=>Yn,switchVideo:()=>J,switchVideoAlt:()=>fr,timeLeftRecording:()=>Lo,trigger:()=>fn,updateConsumingDomains:()=>Ao,updateMediaSettings:()=>bo,updateMicLevel:()=>R,updateMiniCardsGrid:()=>_a,updateParticipantAudioDecibels:()=>qn,updateRecording:()=>so,updateRoomParametersClient:()=>Fa,updatedCoHost:()=>go,useSidebarState:()=>Oi,userWaiting:()=>co,vParams:()=>A,validateAlphanumeric:()=>h});let g=!1;"undefined"!=typeof window&&function(){if(g||"undefined"==typeof document)return;const e="mediasfu-critical-styles";if(document.getElementById(e))return void(g=!0);const t=document.createElement("style");t.id=e,t.textContent="\n/* MediaSFU Critical Styles - Auto-injected */\n\n/* Main container - full viewport */\n.mediasfu-main-container {\n position: relative;\n overflow: hidden;\n}\n\n/* Sub-aspect container - fixed at bottom for control buttons */\n.mediasfu-sub-aspect {\n position: absolute !important;\n bottom: 0 !important;\n left: 0 !important;\n width: 100% !important;\n margin: 0 !important;\n z-index: 10;\n}\n\n.mediasfu-sub-aspect--visible {\n display: flex !important;\n}\n\n.mediasfu-sub-aspect--hidden {\n display: none !important;\n}\n\n/* Control buttons container */\n.mediasfu-container {\n display: flex;\n width: 100%;\n flex-direction: row;\n margin-top: 0px;\n}\n\n.mediasfu-container .buttonContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px;\n border-radius: 5px;\n margin-right: 4px;\n font-size: medium;\n border: none;\n}\n\n.mediasfu-container .buttonContainer:hover {\n cursor: pointer;\n}\n\n.mediasfu-container .verticalButton {\n flex-direction: column;\n}\n\n.mediasfu-container .buttonText {\n font-size: 12px;\n margin-top: 5px;\n}\n\n.mediasfu-customButtonsContainer {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: left;\n}\n\n.mediasfu-customButtonsContainer .customButton {\n width: 100%;\n margin: 10px 0;\n padding: 10px;\n border-radius: 5px;\n background-color: transparent;\n align-items: left;\n justify-content: left;\n border: none;\n}\n\n.mediasfu-customButtonsContainer .buttonContent {\n display: flex;\n align-items: left;\n justify-content: left;\n}\n\n.mediasfu-customButtonsContainer .customButtonIcon {\n font-size: 20px;\n color: #000000;\n margin-right: 4px;\n}\n\n.mediasfu-customButtonsContainer .customButtonText {\n color: #000000;\n}\n",document.head.appendChild(t),g=!0}();const h=async({str:e})=>{let t,r,a;for(r=0,a=e.length;r<a;r++)if(t=e.charCodeAt(r),!(t>47&&t<58||t>64&&t<91||t>96&&t<123))return!1;return!0};async function f({socket:e,roomName:t,islevel:r,member:a,sec:n,apiUserName:o}){return new Promise((s,i)=>{if(n&&t&&r&&o&&a){try{h({str:t}),h({str:o}),h({str:a})}catch{return void i({success:!1,rtpCapabilities:null,reason:"Invalid roomName or apiUserName or member"})}t.startsWith("s")||t.startsWith("p")||t.startsWith("d")?64===n.length&&t.length>=8&&1===r.length&&o.length>=6&&("0"==r||"1"==r||"2"==r)?e.emit("joinConRoom",{roomName:t,islevel:r,member:a,sec:n,apiUserName:o},async e=>{try{if(null==e.rtpCapabilities){if(e.banned)throw new Error("User is banned.");if(e.suspended)throw new Error("User is suspended.");if(e.noAdmin)throw new Error("Host has not joined the room yet.");s(e)}else s(e)}catch(e){console.log("Error joining room:",e),i(e)}}):i({success:!1,rtpCapabilities:null,reason:"Invalid roomName or islevel or apiUserName or secret"}):i({success:!1,rtpCapabilities:null,reason:"Invalid roomName, must start with s or p or d"})}else i({success:!1,rtpCapabilities:null,reason:"Missing required parameters"})})}const b=async({remote_sock:e,apiToken:t,apiUserName:r,parameters:a})=>{const{roomName:n,islevel:o,member:s,device:i,updateDevice:c,receiveAllPipedTransports:d,createDeviceClient:l}=a;try{const u=await f({socket:e,roomName:n,islevel:o,member:s,sec:t,apiUserName:r});if(u&&u.success){if(!i&&u.rtpCapabilities){const e=await l({rtpCapabilities:u.rtpCapabilities});e&&c(e)}await d({nsock:e,parameters:a}),setTimeout(async()=>{try{await d({nsock:e,parameters:a})}catch(e){console.log("[joinConsumeRoom] Retry receiveAllPipedTransports failed:",e)}},3e4)}return u}catch(e){throw console.error("Error in joinConsumeRoom:",e),new Error("Failed to join the consumption room or set up necessary components.")}},y=async({remoteProducerId:e,islevel:t,nsock:r,parameters:a})=>{try{let{device:n,consumingTransports:o,lock_screen:s,updateConsumingTransports:i,connectRecvTransport:c,reorderStreams:d}=a;const l=a.getUpdatedAllParams();if(n=l.device,o=l.consumingTransports,o.includes(e))return o;o.push(e),i(o),r.emit("createWebRtcTransport",{consumer:!0,islevel:t},async({params:t})=>{if(!t.error)try{const o=n.createRecvTransport({...t});o.on("connect",async({dtlsParameters:e},a,n)=>{try{r.emit("transport-recv-connect",{dtlsParameters:e,serverConsumerTransportId:t.id}),a()}catch(e){n(e)}}),o.on("connectionstatechange",async e=>{switch(e){case"connecting":case"connected":default:break;case"failed":o.close(),s?await d({add:!0,parameters:a}):await d({add:!1,parameters:a})}}),await c({consumerTransport:o,remoteProducerId:e,serverConsumerTransportId:t.id,nsock:r,parameters:a})}catch(e){return void console.log(e,"createRecvTransport error")}})}catch(e){return void console.log(e,"signalNewConsumerTransport error")}},x=async({producerId:e,islevel:t,nsock:r,parameters:a,isTranslation:n,translationMeta:o})=>{if(n&&o){const t=a.getUpdatedAllParams?a.getUpdatedAllParams():a,{startConsumingTranslation:n,translationSubscriptions:s,speakerTranslationStates:i,listenerTranslationOverrides:c,listenerTranslationPreferences:d}=t,l=o.language?.toLowerCase(),u=!0===o.isSpeakerControlled,p=i?.get(o.speakerId),m=p?.enabled&&p?.outputLanguage?.toLowerCase()===l,g=u&&p?.enabled&&p?.outputLanguage?.toLowerCase()!==l,h=`${o.speakerId}_${l}`,f=s?.has(h)||s?.has(o.speakerId);let b=!1,y=!1,x=!1;const v=d?.perSpeaker?.get(o.speakerId),S=d?.globalLanguage,R=c?.get(o.speakerId);v?v.wantOriginal?b=!0:v.language&&(v.language===l?y=!0:b=!0):S?S===l?x=!0:b=!0:R&&(R.wantOriginal?b=!0:R.preferredLanguage&&(R.preferredLanguage.toLowerCase()===l?y=!0:b=!0));const w=u&&(!p?.enabled||p?.outputLanguage?.toLowerCase()===l);if(!b&&!g&&(v||S||R||u||m||f)&&(y||x||w||m||f)&&n)try{await n(e,o.speakerId,o.language,o.originalProducerId,r)}catch(e){console.error("[newPipeProducer][Translation] startConsumingTranslation error:",e)}return}const{shareScreenStarted:s,shared:i,landScaped:c,showAlert:d,isWideScreen:l,updateFirst_round:u,updateLandScaped:p}=a;await y({remoteProducerId:e,islevel:t,nsock:r,parameters:a});let m=!1;(s||i)&&(l||c||(d&&d({message:"Please rotate your device to landscape mode for better experience",type:"success",duration:3e3}),p(!0)),m=!0,u(m))},v=async({remoteProducerId:e,parameters:t})=>{let{consumerTransports:r,closeAndResize:a,screenId:n,updateConsumerTransports:o}=t;const s=t.activeTranslationProducerIds,i=s?.has?.(e);if(i){s?.delete?.(e);const r=t.removeTranslationStream;r&&r(e)}const c=r.find(t=>t.producerId===e);if(!c)return;let d=c.consumer.kind;c.producerId===n&&(d="screenshare");try{await c.consumerTransport.close()}catch(e){console.error("Error closing consumer transport:",e)}try{c.consumer.close()}catch(e){console.error("Error closing consumer:",e)}r=r.filter(t=>t.producerId!==e),o(r),await a({producerId:e,kind:d,parameters:t})},S=async({socket:e,newProducerMethod:t=x,closedProducerMethod:r=v,parameters:a})=>{try{e.on("new-producer",async({producerId:r,islevel:n,isTranslation:o,translationMeta:s})=>{t&&await t({producerId:r,islevel:n,nsock:e,parameters:a,isTranslation:o,translationMeta:s})}),e.on("producer-closed",async({remoteProducerId:e})=>{r&&await r({remoteProducerId:e,parameters:a})}),await a.receiveAllPipedTransports({nsock:e,community:!0,parameters:a})}catch(e){console.log("ConnectLocalIps error",e)}},R=async(e,t)=>{try{setInterval(()=>{const r=e.rtpSender;r?.getStats().then(e=>{e.forEach(e=>{if("media-source"===e.type&&"audio"===e.kind&&void 0!==e.audioLevel){const r=127.5+127.5*e.audioLevel;t(r)}})})},1e3)}catch{}},w=async({parameters:e,audioParams:t,targetOption:r="all"})=>{try{let{audioProducer:a,producerTransport:n,updateAudioProducer:o,updateProducerTransport:s}=e;if("all"!==r&&"remote"!==r||(a=await n.produce(t),R(a,e.updateAudioLevel),o(a),s(n)),"all"===r||"local"===r)try{await(async({parameters:e,audioParams:t})=>{try{let{localAudioProducer:r,localProducerTransport:a,updateLocalAudioProducer:n,updateLocalProducerTransport:o}=e;a&&(r=await a.produce(t),n?.(r),o?.(a))}catch(e){throw console.error("Error connecting local audio transport:",e),e}})({parameters:e,audioParams:t}),"local"===r&&e.updateAudioLevel&&(e.localAudioProducer||(e=e.getUpdatedAllParams()),R(e.localAudioProducer,e.updateAudioLevel))}catch(e){console.error("Local audio transport connection failed:",e)}}catch(e){throw console.error("audio transport connection failed:",e),new Error("Failed to connect to audio transport.")}};async function k({participantId:e,participantName:t,type:r,socket:a,coHostResponsibility:n,participants:o,member:s,islevel:i,showAlert:c,coHost:d,roomName:l}){try{let u=!1;try{u=n.find(e=>"media"===e.name)?.value??!1}catch(e){console.log("Error retrieving media control value",e)}const p=o.find(e=>e.name===t);if(!p)return void console.log("Participant not found");"2"===i||d===s&&!0===u?(!p.muted&&"2"!==p.islevel&&"audio"===r||"2"!==p.islevel&&"video"===r&&p.videoOn)&&a.emit("controlMedia",{participantId:e,participantName:t,type:r,roomName:l}):c&&c({message:"You are not allowed to control media for other participants.",type:"danger",duration:3e3})}catch(e){console.log("controlMedia error",e)}}async function C({page:e,parameters:t,breakRoom:r=-1,inBreakRoom:a=!1}){try{let{paginatedStreams:n,currentUserPage:o,updateMainWindow:s,updateCurrentUserPage:i,updateUpdateMainWindow:c,dispStreams:d}=t;o=e="string"==typeof e?parseInt(e):e,i(o),s=!0,c(s),await d({lStreams:n[e],ind:e,parameters:t,breakRoom:r,inBreakRoom:a})}catch(e){e instanceof Error?console.log("Error generating page content:",e.message):console.log("Error generating page content:",e)}}const j=async({nsock:e,islevel:t,parameters:r})=>{try{const{member:a,signalNewConsumerTransport:n}=r;await e.emit("getProducersPipedAlt",{islevel:t,member:a},async a=>{a.length>0&&await Promise.all(a.map(a=>n({remoteProducerId:a,islevel:t,nsock:e,parameters:r})))})}catch(e){console.log("Error getting piped producers:",e.message)}},P={encodings:[{rid:"r0",maxBitrate:64e3}]},M={encodings:[{rid:"r8",maxBitrate:24e4,scalabilityMode:"L1T3",scaleResolutionDownBy:4},{rid:"r9",maxBitrate:48e4,scalabilityMode:"L1T3",scaleResolutionDownBy:2},{rid:"r10",maxBitrate:96e4,scalabilityMode:"L1T3"}],codecOptions:{videoGoogleStartBitrate:384}},I={encodings:[{rid:"r7",maxBitrate:3e6}],codecOptions:{videoGoogleStartBitrate:1e3}},A={encodings:[{rid:"r3",maxBitrate:2e5,scalabilityMode:"L1T3",scaleResolutionDownBy:4},{rid:"r4",maxBitrate:4e5,scalabilityMode:"L1T3",scaleResolutionDownBy:2},{rid:"r5",maxBitrate:8e5,scalabilityMode:"L1T3"}],codecOptions:{videoGoogleStartBitrate:320}},T=({position:e})=>{switch(e){case"center":return{justifyContent:"center",alignItems:"center"};case"topLeft":return{justifyContent:"flex-start",alignItems:"flex-start"};case"topRight":return{justifyContent:"flex-start",alignItems:"flex-end"};case"bottomLeft":return{justifyContent:"flex-end",alignItems:"flex-start"};default:return{justifyContent:"flex-end",alignItems:"flex-end"}}},F=({position:e})=>{switch(e){case"topLeft":return{top:0,left:0};case"topRight":return{top:0,right:0};case"bottomLeft":return{bottom:0,left:0};case"bottomRight":return{bottom:0,right:0};default:return{}}},D=async({roomName:e,selectedParticipant:t,coHost:r,coHostResponsibility:a,updateIsCoHostModalVisible:n,updateCoHostResponsibility:o,updateCoHost:s,socket:i})=>{let c=r;("No coHost"!==r||t&&"Select a participant"!==t)&&(t&&"Select a participant"!==t&&(c=t,s(c)),o(a),i.emit("updateCoHost",{roomName:e,coHost:c,coHostResponsibility:a})),n(!1)},N=async({parameters:e})=>{let{showAlert:t,meetingDisplayType:r,autoWave:a,forceFullDisplay:n,meetingVideoOptimized:o,islevel:s,recordStarted:i,recordResumed:c,recordStopped:d,recordPaused:l,recordingDisplayType:u,recordingVideoOptimized:p,prevForceFullDisplay:m,prevMeetingDisplayType:g,updateMeetingDisplayType:h,updateAutoWave:f,updateForceFullDisplay:b,updateMeetingVideoOptimized:y,updatePrevForceFullDisplay:x,updatePrevMeetingDisplayType:v,updateIsDisplaySettingsModalVisible:S,updateFirstAll:R,updateUpdateMainWindow:w,breakOutRoomStarted:k,breakOutRoomEnded:C,onScreenChanges:j}=e;if(f(a),b(n),"2"===s&&(i||c)&&!d&&!l){if("video"===u&&"video"===r&&o&&!p)return t?.({message:"Meeting display type can be either video, media, or all when recording display type is non-optimized video.",type:"danger",duration:3e3}),r=u,h(r),o=p,void y(o);if("media"===u&&"video"===r)return t?.({message:"Meeting display type can be either media or all when recording display type is media.",type:"danger",duration:3e3}),r=u,void h(r);if("all"===u&&("video"===r||"media"===r))return t?.({message:"Meeting display type can be only all when recording display type is all.",type:"danger",duration:3e3}),r=u,void h(r)}if(h(r),y(o),S(!1),g!==r||m!==n){if(k&&!C&&"all"!==r)return t?.({message:"Breakout room is active. Display type can only be all.",type:"danger"}),r=g,void h(g);R("all"!==r),w(!0),await j({changed:!0,parameters:{...e,meetingDisplayType:r,forceFullDisplay:n}}),x(n),v(r)}},L=async({socket:e,localSocket:t,member:r,roomName:a,ban:n=!1})=>{e.emit("disconnectUser",{member:r,roomName:a,ban:n}),t&&t.id&&t.emit("disconnectUser",{member:r,roomName:a,ban:n})},V=async({member:e,islevel:t,showAlert:r,coHostResponsibility:a,coHost:n,chatSetting:o,message:s,roomName:i,messagesLength:c,receivers:d,group:l,sender:u,socket:p})=>{let m=!1;if(c>100&&i.startsWith("d")||c>500&&i.startsWith("s")||c>1e5&&i.startsWith("p"))return void r?.({message:"You have reached the maximum number of messages allowed.",type:"danger",duration:3e3});if(!s||!d||!e&&!u)return void r?.({message:"Message is not valid.",type:"danger",duration:3e3});const g={sender:u||e,receivers:d,message:s,timestamp:(new Date).toLocaleTimeString(),group:null!=l&&l};try{m=a.find(e=>"chat"===e.name)?.value??!1}catch(e){console.error(e)}if("2"===t||n===e&&!0===m);else if(!o)return void r?.({message:"You are not allowed to send a message in this event room",type:"danger",duration:3e3});p.emit("sendMessage",{messageObject:g,roomName:i})},B=({coHostResponsibility:e,participant:t,member:r,islevel:a,showAlert:n,coHost:o,updateIsMessagesModalVisible:s,updateDirectMessageDetails:i,updateStartDirectMessage:c})=>{let d=!1;try{d=e.find(e=>"chat"===e.name)?.value??!1}catch(e){console.error(e)}"2"===a||o===r&&!0===d?"2"!==t.islevel?(i(t),c(!0),s(!0)):n?.({message:"You cannot direct message the host",type:"danger",duration:3e3}):n?.({message:"You are not allowed to send this message",type:"danger",duration:3e3})},$=async({socket:e,coHostResponsibility:t,participant:r,member:a,islevel:n,showAlert:o,coHost:s,roomName:i})=>{let c=!1;try{c=t.find(e=>"media"===e.name)?.value??!1}catch(e){console.error(e)}if("2"===n||s===a&&c){if(!r.muted&&"2"!==r.islevel){const t=r.id;e.emit("controlMedia",{participantId:t,participantName:r.name,type:"all",roomName:i})}}else o?.({message:"You are not allowed to mute other participants",type:"danger",duration:3e3})},E=async({coHostResponsibility:e,participant:t,member:r,islevel:a,showAlert:n,coHost:o,participants:s,socket:i,roomName:c,updateParticipants:d})=>{let l=!1;try{l=e.find(e=>"participants"===e.name)?.value??!1}catch{l=!1}if("2"===a||o===r&&!0===l){if("2"!==t.islevel){const e=t.id;i.emit("disconnectUserInitiate",{member:t.name,roomName:c,id:e});const r=s.findIndex(e=>e.name===t.name);-1!==r&&s.splice(r,1),d(s)}}else n?.({message:"You are not allowed to remove other participants",type:"danger",duration:3e3})},W=async({recordingMediaOptions:e,recordingVideoPausesLimit:t,recordingAudioPausesLimit:r,pauseRecordCount:a,showAlert:n})=>a<("video"===e?t:r)||(n?.({message:"You have reached the limit of pauses - you can choose to stop recording.",type:"danger",duration:3e3}),!1),H=async({recordingMediaOptions:e,recordingVideoPausesLimit:t,recordingAudioPausesLimit:r,pauseRecordCount:a})=>a<=("video"===e?t:r);function O({stop:e=!1,isTimerRunning:t,canPauseResume:r,showAlert:a}){if(t&&r)return!0;{const t=e?"Can only stop after 15 seconds of starting or pausing or resuming recording":"Can only pause or resume after 15 seconds of starting or pausing or resuming recording";return a?.({message:t,type:"danger"}),!1}}function z({recordElapsedTime:e,recordStartTime:t,updateRecordElapsedTime:r,updateRecordingProgressTime:a}){function n(e){return e.toString().padStart(2,"0")}const o=(new Date).getTime();r(e=Math.floor((o-t)/1e3));const s=Math.floor(e/3600),i=Math.floor(e%3600/60),c=e%60;a(n(s)+":"+n(i)+":"+n(c))}async function U({parameters:e}){let{getUpdatedAllParams:t}=e;e=t();let{isTimerRunning:r,canPauseResume:a,recordElapsedTime:n,recordStartTime:o,recordTimerInterval:s,showAlert:i,updateRecordStartTime:c,updateRecordTimerInterval:d,updateIsTimerRunning:l,updateCanPauseResume:u}=e;return!r&&a?(o=(new Date).getTime()-1e3*n,c(o),s=setInterval(()=>{z({recordElapsedTime:n,recordStartTime:o,updateRecordElapsedTime:e.updateRecordElapsedTime,updateRecordingProgressTime:e.updateRecordingProgressTime}),((e=t()).recordPaused||e.recordStopped||""===e.roomName||null===e.roomName)&&(clearInterval(s),d(null),r=!1,l(r),a=!1,u(a))},1e3),d(s),r=!0,l(r),a=!1,u(a),!0):(i?.({type:"danger",message:"Can only pause or resume after 15 seconds of starting or pausing or resuming recording"}),!1)}async function q({parameters:e}){let{getUpdatedAllParams:t}=e;e=t();let{recordStartTime:r,recordTimerInterval:a,isTimerRunning:n,canPauseResume:o,recordChangeSeconds:s,updateRecordStartTime:i,updateRecordTimerInterval:c,updateIsTimerRunning:d,updateCanPauseResume:l}=e;n||(r=(new Date).getTime(),i(r),a=setInterval(()=>{z({recordElapsedTime:e.recordElapsedTime,recordStartTime:r,updateRecordElapsedTime:e.updateRecordElapsedTime,updateRecordingProgressTime:e.updateRecordingProgressTime}),((e=t()).recordPaused||e.recordStopped||""==e.roomName||null==e.roomName)&&(clearInterval(a),c(null),n=!1,d(n),o=!1,l(o))},1e3),c(a),n=!0,d(n),o=!1,l(o),setTimeout(function(){o=!0,l(o)},s))}const _=async({socket:e,request:t,updateRequestList:r,requestList:a,action:n,roomName:o})=>{r(a.filter(e=>!(e.id===t.id&&e.icon===t.icon&&e.name===t.name)));const s={id:t.id,name:t.name,type:t.icon,action:n};e.emit("updateUserofRequestStatus",{requestResponse:s,roomName:o})},G=async({roomName:e,audioSet:t,videoSet:r,screenshareSet:a,chatSet:n,socket:o,updateAudioSetting:s,updateVideoSetting:i,updateScreenshareSetting:c,updateChatSetting:d,updateIsSettingsModalVisible:l})=>{t&&s(t),r&&i(r),a&&c(a),n&&d(n);const u=[t,r,a,n];o.emit("updateSettingsForRequests",{settings:u,roomName:e}),l(!1)},Y=async({isMessagesModalVisible:e,updateIsMessagesModalVisible:t,chatSetting:r,islevel:a,showAlert:n})=>{e?t(!1):"allow"!==r&&"2"!==a?(t(!1),n?.({message:"Chat is disabled for this event.",type:"danger",duration:3e3})):t(!0)},K=async({audioPreference:e,parameters:t})=>{let{defAudioID:r,userDefaultAudioInputDevice:a,prevAudioInputDevice:n,updateUserDefaultAudioInputDevice:o,updatePrevAudioInputDevice:s,switchUserAudio:i}=t;e!==r&&(n=a,s(n),a=e,o(a),r&&await i({audioPreference:e,parameters:t}))},J=async({videoPreference:e,parameters:t})=>{let{recordStarted:r,recordResumed:a,recordStopped:n,recordPaused:o,recordingMediaOptions:s,videoAlreadyOn:i,userDefaultVideoInputDevice:c,defVideoID:d,allowed:l,updateDefVideoID:u,updatePrevVideoInputDevice:p,updateUserDefaultVideoInputDevice:m,updateIsMediaSettingsModalVisible:g,showAlert:h,switchUserVideo:f}=t,b=!1;if(!r&&!a||n||o||"video"===s&&(b=!0),l){if(b){if(i)return void h?.({message:"Please turn off your video before switching.",type:"danger",duration:3e3})}else if(!i)return void h?.({message:"Please turn on your video before switching.",type:"danger",duration:3e3});d||(d=c??"default",u(d)),e!==d&&(p(c),c=e,m(c),d&&(g(!1),await f({videoPreference:e,checkoff:b,parameters:t})))}else h?.({message:"Allow access to your camera by starting it for the first time.",type:"danger",duration:3e3})},X=async({participantId:e,participantName:t,updateWaitingList:r,waitingList:a,type:n,roomName:o,socket:s})=>{r(a.filter(e=>e.name!==t));const i="true"===n||!0===n?"true":"false";s.emit("allowUserIn",{participantId:e,participantName:t,type:i,roomName:o})};async function Z({socket:e,roomName:t,islevel:r,member:a,sec:n,apiUserName:o}){return new Promise((s,i)=>{if(n&&t&&r&&o&&a){try{h({str:t}),h({str:o}),h({str:a})}catch{return void i({success:!1,rtpCapabilities:null,reason:"Invalid roomName or apiUserName or member"})}t.startsWith("s")||t.startsWith("p")||t.startsWith("d")?64===n.length&&t.length>=8&&1===r.length&&o.length>=6&&("0"===r||"1"===r||"2"===r)?e.emit("joinRoom",{roomName:t,islevel:r,member:a,sec:n,apiUserName:o},async e=>{try{if(null===e.rtpCapabilities){if(e.banned)throw new Error("User is banned.");if(e.suspended)throw new Error("User is suspended.");if(e.noAdmin)throw new Error("Host has not joined the room yet.");s(e)}else s(e)}catch(e){console.log("Error joining room:",e),i(e)}}):i({success:!1,rtpCapabilities:null,reason:"Invalid roomName or islevel or apiUserName or secret"}):i({success:!1,rtpCapabilities:null,reason:"Invalid roomName, must start with s or p or d"})}else i({success:!1,rtpCapabilities:null,reason:"Missing required parameters"})})}const Q=async({payload:e,apiUserName:t,apiKey:r,localLink:a=""})=>{try{if(!t||!r||"yourAPIUSERNAME"===t||"yourAPIKEY"===r||64!==r.length||t.length<6)return{data:{error:"Invalid credentials"},success:!1};let n="https://mediasfu.com/v1/rooms/";a&&""!==a.trim()&&!a.includes("mediasfu.com")&&(n=(a=a.replace(/\/$/,""))+"/joinRoom");const o=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}:${r}`},body:JSON.stringify(e)});if(!o.ok)throw new Error(`HTTP error! Status: ${o.status}`);return{data:await o.json(),success:!0}}catch(e){return{data:{error:`Unable to join room, ${e.reason?e.reason:"unknown error"}`},success:!1}}};var ee=p(985),te=p.n(ee),re=p(67),ae=p.n(re);const ne=new(ae()),oe=async({apiUserName:e,apiToken:t,link:r,apiKey:a="",userName:n,parameters:o,validate:s=!0})=>{let i=parseInt(ne.get("unsuccessfulAttempts"))||0,c=parseInt(ne.get("lastRequestTimestamp"))||0;if(i>=10&&Date.now()-c<108e5)o.showAlert?.({message:"Too many unsuccessful attempts. Please try again later.",type:"danger",duration:3e3});else{i=0,ne.set("unsuccessfulAttempts",i.toString()),ne.set("lastRequestTimestamp",Date.now().toString());try{o.updateIsLoadingModalVisible(!0);const c=await o.connectSocket({apiUserName:e,apiKey:a,apiToken:t,link:r}),d=new Promise((e,t)=>setTimeout(()=>t(new Error("Request timed out")),1e4)),l=await Promise.race([c,d]);l&&l instanceof ee.Socket&&l.id?(i=0,ne.set("unsuccessfulAttempts",i.toString()),ne.set("lastRequestTimestamp",Date.now().toString()),s?o.updateSocket(l):o.updateLocalSocket?.(l),o.updateApiUserName(e),o.updateApiToken(t),o.updateLink(r),o.updateRoomName(e),o.updateMember(n),s&&o.updateValidated(!0)):(i+=1,ne.set("unsuccessfulAttempts",i.toString()),o.updateIsLoadingModalVisible(!1),o.showAlert?.({message:"Invalid credentials.",type:"danger",duration:3e3}))}catch{o.showAlert?.({message:"Unable to connect. Check your credentials and try again.",type:"danger",duration:3e3}),i+=1,ne.set("unsuccessfulAttempts",i.toString()),o.updateIsLoadingModalVisible(!1)}}};async function se({data:e,member:t,roomName:r,islevel:a,socket:n,parameters:o,joinMediaSFURoom:s=Q,localLink:i=""}){if(e.mediasfuURL&&""!==e.mediasfuURL&&e.mediasfuURL.length>10){let a,n;try{let t=["/meet/","/chat/","/broadcast/"].find(t=>e.mediasfuURL.includes(t))||"/meet/";const r=e.mediasfuURL.split(t);a=r[0],n=r[1].split("/")[1]}catch{return void(a=e.mediasfuURL)}return void await oe({apiUserName:r,apiToken:n,link:a,apiKey:"",userName:t,parameters:o,validate:!1})}if((!e.mediasfuURL||e.mediasfuURL.length<10)&&"2"!==a&&e.allowRecord&&(!0===e.allowRecord||"true"===e.allowRecord)&&e.apiKey&&64===e.apiKey.length&&e.apiUserName&&e.apiUserName.length>5&&(r.startsWith("s")||r.startsWith("p"))){const a={action:"join",meetingID:r,userName:t},c=await s({payload:a,apiKey:e.apiKey,apiUserName:e.apiUserName,localLink:i});if(c.success&&c.data&&"roomName"in c.data){try{n.emit("updateMediasfuURL",{eventID:r,mediasfuURL:c.data.publicURL},async()=>{})}catch{}await oe({apiUserName:c.data.roomName,apiToken:c.data.secret,link:c.data.link,userName:t,parameters:o,validate:!1}),o.updateApiToken(c.data.secret)}return}}async function ie({socket:e,roomName:t,islevel:r,member:a,sec:n,apiUserName:o,parameters:s,checkConnect:i=!1,joinMediaSFURoom:c=Q,localLink:d=""}){return new Promise((l,u)=>{if(n&&t&&r&&o&&a){try{h({str:t}),h({str:o}),h({str:a})}catch{return void u({success:!1,rtpCapabilities:null,reason:"Invalid roomName or apiUserName or member"})}t.startsWith("s")||t.startsWith("p")||t.startsWith("m")||t.startsWith("d")?32===n.length&&t.length>=8&&1===r.length&&o.length>=6&&("0"===r||"1"===r||"2"===r)?e.emit("joinRoom",{roomName:t,islevel:r,member:a,sec:n,apiUserName:o},async n=>{try{if(null===n.rtpCapabilities){if(n.isBanned)throw new Error("User is banned.");if(n.hostNotJoined)throw new Error("Host has not joined the room yet.");l(n)}else{if(i)await se({data:n,member:a,roomName:t,islevel:r,socket:e,parameters:s,joinMediaSFURoom:c,localLink:d});else if(n.mediasfuURL&&""!==n.mediasfuURL&&n.mediasfuURL.length>10){let e,t=["/meet/","/chat/","/broadcast/"].find(e=>n.mediasfuURL.includes(e))||"/meet/";e=n.mediasfuURL.split(t)[1].split("/")[1],s.updateApiToken(e)}l(n)}}catch(e){console.log("Error joining room:",e),u(e)}}):u({success:!1,rtpCapabilities:null,reason:"Invalid roomName or islevel or apiUserName or secret"}):u({success:!1,rtpCapabilities:null,reason:"Invalid roomName, must start with s or p or m or d"})}else u({success:!1,rtpCapabilities:null,reason:"Missing required parameters"})})}var ce=p(310),de=p(156),le=p.n(de),ue=p(575),pe=p(63);const me={roomName:"",member:"",adminPasscode:"",islevel:"1",coHost:"No coHost",coHostResponsibility:[{name:"participants",value:!1,dedicated:!1},{name:"media",value:!1,dedicated:!1},{name:"waiting",value:!1,dedicated:!1},{name:"chat",value:!1,dedicated:!1}],youAreCoHost:!1,youAreHost:!1,confirmedToRecord:!1,meetingDisplayType:"media",meetingVideoOptimized:!1,eventType:"webinar",participants:[],filteredParticipants:[],participantsCounter:0,participantsFilter:"",validated:!1,localUIMode:!1,socket:{},localSocket:void 0,roomData:null,device:null,apiKey:"",apiUserName:"",apiToken:"",link:"",consume_sockets:[],rtpCapabilities:null,roomRecvIPs:[],meetingRoomParams:null,itemPageLimit:4,audioOnlyRoom:!1,addForBasic:!1,screenPageLimit:4,shareScreenStarted:!1,shared:!1,targetOrientation:"landscape",targetResolution:"sd",targetResolutionHost:"sd",vidCons:{width:640,height:360},frameRate:10,hParams:{},vParams:{},screenParams:{},aParams:{},recordingAudioPausesLimit:0,recordingAudioPausesCount:0,recordingAudioSupport:!1,recordingAudioPeopleLimit:0,recordingAudioParticipantsTimeLimit:0,recordingVideoPausesCount:0,recordingVideoPausesLimit:0,recordingVideoSupport:!1,recordingVideoPeopleLimit:0,recordingVideoParticipantsTimeLimit:0,recordingAllParticipantsSupport:!1,recordingVideoParticipantsSupport:!1,recordingAllParticipantsFullRoomSupport:!1,recordingVideoParticipantsFullRoomSupport:!1,recordingPreferredOrientation:"landscape",recordingSupportForOtherOrientation:!1,recordingMultiFormatsSupport:!1,userRecordingParams:{mainSpecs:{mediaOptions:"video",audioOptions:"all",videoOptions:"all",videoType:"fullDisplay",videoOptimized:!1,recordingDisplayType:"media",addHLS:!1},dispSpecs:{nameTags:!0,backgroundColor:"#000000",nameTagsColor:"#ffffff",orientationVideo:"portrait"}},canRecord:!1,startReport:!1,endReport:!1,recordTimerInterval:null,recordStartTime:0,recordElapsedTime:0,isTimerRunning:!1,canPauseResume:!1,recordChangeSeconds:15e3,pauseLimit:0,pauseRecordCount:0,canLaunchRecord:!0,stopLaunchRecord:!1,participantsAll:[],firstAll:!1,updateMainWindow:!1,first_round:!1,landScaped:!1,lock_screen:!1,screenId:"",allVideoStreams:[],newLimitedStreams:[],newLimitedStreamsIDs:[],activeSounds:[],screenShareIDStream:"",screenShareNameStream:"",adminIDStream:"",adminNameStream:"",youYouStream:[],youYouStreamIDs:[],localStream:null,recordStarted:!1,recordResumed:!1,recordPaused:!1,recordStopped:!1,adminRestrictSetting:!1,videoRequestState:null,videoRequestTime:0,videoAction:!1,localStreamVideo:null,userDefaultVideoInputDevice:"",currentFacingMode:"user",prevFacingMode:"user",defVideoID:"",allowed:!1,dispActiveNames:[],activeNames:[],prevActiveNames:[],p_activeNames:[],p_dispActiveNames:[],membersReceived:!1,deferScreenReceived:!1,hostFirstSwitch:!1,micAction:!1,screenAction:!1,chatAction:!1,audioRequestState:null,screenRequestState:null,chatRequestState:null,audioRequestTime:0,screenRequestTime:0,chatRequestTime:0,updateRequestIntervalSeconds:240,oldSoundIds:[],hostLabel:"Host",mainScreenFilled:!1,localStreamScreen:null,screenAlreadyOn:!1,chatAlreadyOn:!1,redirectURL:"",oldAllStreams:[],adminVidID:"",streamNames:[],non_alVideoStreams:[],sortAudioLoudness:!1,audioDecibels:[],mixed_alVideoStreams:[],non_alVideoStreams_muted:[],paginatedStreams:[],localStreamAudio:null,defAudioID:"",userDefaultAudioInputDevice:"",userDefaultAudioOutputDevice:"",prevAudioInputDevice:"",prevVideoInputDevice:"",audioPaused:!1,mainScreenPerson:"",adminOnMainScreen:!1,screenStates:[{mainScreenPerson:"",mainScreenProducerId:"",mainScreenFilled:!1,adminOnMainScreen:!1}],prevScreenStates:[{mainScreenPerson:"",mainScreenProducerId:"",mainScreenFilled:!1,adminOnMainScreen:!1}],updateDateState:null,lastUpdate:null,nForReadjustRecord:0,fixedPageLimit:4,removeAltGrid:!1,nForReadjust:0,reorderInterval:3e4,fastReorderInterval:1e4,lastReorderTime:0,audStreamNames:[],currentUserPage:0,mainHeightWidth:0,prevMainHeightWidth:0,prevDoPaginate:!1,doPaginate:!1,shareEnded:!1,lStreams:[],chatRefStreams:[],controlHeight:0,isWideScreen:!1,isMediumScreen:!1,isSmallScreen:!1,addGrid:!1,addAltGrid:!1,gridRows:0,gridCols:0,altGridRows:0,altGridCols:0,numberPages:0,currentStreams:[],showMiniView:!1,nStream:null,defer_receive:!1,allAudioStreams:[],remoteScreenStream:[],screenProducer:null,localScreenProducer:null,gotAllVids:!1,paginationHeightWidth:40,paginationDirection:"horizontal",gridSizes:{gridWidth:0,gridHeight:0,altGridWidth:0,altGridHeight:0},screenForceFullDisplay:!1,mainGridStream:[],otherGridStreams:[[],[]],audioOnlyStreams:[],videoInputs:[],audioInputs:[],meetingProgressTime:"00:00:00",meetingElapsedTime:0,ref_participants:[],messages:[],startDirectMessage:!1,directMessageDetails:null,showMessagesBadge:!1,audioSetting:"allow",videoSetting:"allow",screenshareSetting:"allow",chatSetting:"allow",displayOption:"media",autoWave:!0,forceFullDisplay:!0,prevForceFullDisplay:!1,prevMeetingDisplayType:"video",waitingRoomFilter:"",waitingRoomList:[],waitingRoomCounter:0,filteredWaitingRoomList:[],requestFilter:"",requestList:[],requestCounter:0,filteredRequestList:[],totalReqWait:0,alertVisible:!1,alertMessage:"",alertType:"success",alertDuration:3e3,progressTimerVisible:!0,progressTimerValue:0,isMenuModalVisible:!1,isRecordingModalVisible:!1,isSettingsModalVisible:!1,isRequestsModalVisible:!1,isWaitingModalVisible:!1,isCoHostModalVisible:!1,isMediaSettingsModalVisible:!1,isDisplaySettingsModalVisible:!1,isParticipantsModalVisible:!1,isMessagesModalVisible:!1,isConfirmExitModalVisible:!1,isConfirmHereModalVisible:!1,isShareEventModalVisible:!1,isLoadingModalVisible:!1,recordingMediaOptions:"video",recordingAudioOptions:"all",recordingVideoOptions:"all",recordingVideoType:"fullDisplay",recordingVideoOptimized:!1,recordingDisplayType:"video",recordingAddHLS:!0,recordingNameTags:!0,recordingBackgroundColor:"#83c0e9",recordingNameTagsColor:"#ffffff",recordingAddText:!1,recordingCustomText:"Add Text",recordingCustomTextPosition:"top",recordingCustomTextColor:"#ffffff",recordingOrientationVideo:"landscape",clearedToResume:!0,clearedToRecord:!0,recordState:"green",showRecordButtons:!1,recordingProgressTime:"00:00:00",audioSwitching:!1,videoSwitching:!1,videoAlreadyOn:!1,audioAlreadyOn:!1,componentSizes:{mainHeight:0,otherHeight:0,mainWidth:0,otherWidth:0},hasCameraPermission:!1,hasAudioPermission:!1,transportCreated:!1,localTransportCreated:!1,transportCreatedVideo:!1,transportCreatedAudio:!1,transportCreatedScreen:!1,producerTransport:null,localProducerTransport:null,videoProducer:null,localVideoProducer:null,params:{},videoParams:{},audioParams:{},audioProducer:null,localAudioProducer:null,consumerTransports:[],consumingTransports:[],polls:[],poll:null,isPollModalVisible:!1,customImage:"",selectedImage:"",segmentVideo:null,selfieSegmentation:null,pauseSegmentation:!1,processedStream:null,keepBackground:!1,backgroundHasChanged:!1,virtualStream:null,mainCanvas:null,prevKeepBackground:!1,appliedBackground:!1,isBackgroundModalVisible:!1,autoClickBackground:!1,breakoutRooms:[],currentRoomIndex:0,canStartBreakout:!1,breakOutRoomStarted:!1,breakOutRoomEnded:!1,hostNewRoom:-1,limitedBreakRoom:[],mainRoomsLength:0,memberRoom:-1,isBreakoutRoomsModalVisible:!1,whiteboardUsers:[],currentWhiteboardIndex:0,canStartWhiteboard:!1,whiteboardStarted:!1,whiteboardEnded:!1,whiteboardLimit:4,isWhiteboardModalVisible:!1,isConfigureWhiteboardModalVisible:!1,shapes:[],useImageBackground:!0,redoStack:[],undoStack:[],canvasStream:null,canvasWhiteboard:null,canvasScreenboard:null,processedScreenStream:null,annotateScreenStream:!1,mainScreenCanvas:null,isScreenboardModalVisible:!1,micActive:!1,videoActive:!1,screenShareActive:!1,endCallActive:!1,participantsActive:!1,menuActive:!1,commentsActive:!1,permissionConfig:null,panelistsFocused:!1,panelistFocusChanged:!1,panelists:[],muteOthersMic:!1,muteOthersCamera:!1},ge=({backgroundColor:e="transparent",children:t,showControls:r=!0,containerWidthFraction:a=1,containerHeightFraction:n=1,defaultFraction:o=.94,updateIsWideScreen:s,updateIsMediumScreen:i,updateIsSmallScreen:c,containerProps:d,renderContent:l,renderContainer:u})=>{const p=()=>"undefined"==typeof window?{width:0,height:0}:{width:window.innerWidth,height:window.innerHeight},m=e=>{const{width:t,height:s}=e,i=r?Math.floor(n*s*o):Math.floor(n*s);return{width:Math.floor(a*t),height:i}},[g,h]=(0,de.useState)(()=>m(p()));(0,de.useEffect)(()=>{const e=()=>{const e=p(),t=m(e),r=t.width,a=t.height;let n=r>=768;const o=r>=576&&r<768,d=r<576;!n&&r>1.5*(a||1)&&(n=!0),s(n),i(o),c(d),h(t)};return e(),window.addEventListener("resize",e),window.addEventListener("orientationchange",e),()=>{window.removeEventListener("resize",e),window.removeEventListener("orientationchange",e)}},[r,n,a,o,s,i,c]);const{className:f,style:b,...y}=d??{},x=((...e)=>{const t=e.filter(Boolean).join(" ").trim();return t.length>0?t:void 0})("mediasfu-main-aspect",f),v={backgroundColor:e,height:g.height,width:g.width,overflow:"hidden",position:"relative",transition:"width 0.2s ease, height 0.2s ease",...b},S=(0,de.useMemo)(()=>({width:g.width,height:g.height}),[g.height,g.width]),R=l?l({defaultContent:t,dimensions:S}):t,w=(0,ce.jsx)("div",{className:x,style:v,...y,children:R}),k=u?u({defaultContainer:w,dimensions:S}):w;return(0,ce.jsx)(ce.Fragment,{children:k})},he=({buttons:e,buttonColor:t,buttonBackgroundColor:r,alignment:a="flex-start",vertical:n=!1,buttonsContainerStyle:o,alternateIconComponent:s,containerProps:i,buttonProps:c,buttonStyle:d,buttonClassName:l,iconWrapperProps:u,textProps:p,contentWrapperProps:m,renderButton:g,renderButtonContent:h,gap:f})=>{const{className:b,style:y,onClick:x,type:v,...S}=c??{},{className:R,style:w,...k}=i??{},C=["mediasfu-container",R].filter(Boolean).join(" "),j={..."center"===a?{justifyContent:"center"}:"flex-end"===a?{justifyContent:"flex-end"}:"space-between"===a?{justifyContent:"space-between"}:"space-around"===a?{justifyContent:"space-around"}:"space-evenly"===a?{justifyContent:"space-evenly"}:{justifyContent:"flex-start"},...n?{flexDirection:"column"}:{},...void 0!==f?{gap:f}:{},...o,...w},{style:P,className:M,...I}=m??{},{style:A,className:T,...F}=u??{},{style:D,className:N,...L}=p??{};return(0,ce.jsx)("div",{...k,className:C,style:j,children:e.map((e,a)=>{const{buttonProps:o,style:i,className:c,iconWrapperProps:u,textProps:p,contentWrapperProps:m}=e,{onClick:f,style:R,className:w,type:k,...C}=o??{},{style:j,className:V,...B}=m??{},$=["mediasfu-button-content",M,V].filter(Boolean).join(" ")||void 0,E={display:"flex",alignItems:"center",gap:n?6:8,...P,...j},W={...I,...B,className:$,style:E},{style:H,className:O,...z}=u??{},U=["mediasfu-button-icon",T,O].filter(Boolean).join(" ")||void 0,q={display:"flex",alignItems:"center",...A,...H},_={...F,...z,className:U,style:q},{style:G,className:Y,...K}=p??{},J=["buttonText",N,Y].filter(Boolean).join(" ")||void 0,X={color:e.color||t||"#ffffff",...D,...G},Z={...L,...K,className:J,style:X},Q=e.activeColor||t||"#ffffff",ee=e.inActiveColor||t||"#ffffff",te=(()=>{if(e.customComponent)return e.customComponent;if(e.icon){if(e.active){if(e.alternateIconComponent)return e.alternateIconComponent;if(e.alternateIcon)return(0,ce.jsx)(ue.FontAwesomeIcon,{icon:e.alternateIcon,size:"lg",color:Q});if(s)return s}return e.iconComponent?e.iconComponent:(0,ce.jsx)(ue.FontAwesomeIcon,{icon:e.icon,size:"lg",color:ee})}return s||null})(),re=te?(0,ce.jsx)("span",{..._,children:te}):null,ae=e.name?(0,ce.jsx)("span",{...Z,children:e.name}):null,ne=(0,ce.jsxs)("div",{...W,children:[re,ae]}),oe={...S,...C,disabled:e.disabled??C?.disabled??S?.disabled},se=!1!==e.show,ie={backgroundColor:(()=>{const t=e.backgroundColor?.pressed||r?.pressed,a=e.backgroundColor?.default||r?.default;return se?e.active&&t?t:a||y?.backgroundColor||d?.backgroundColor||i?.backgroundColor||"transparent":"transparent"})(),...n?{flexDirection:"column"}:{},display:se?"flex":"none",...y,...d,...R,...i};se&&!ie.display&&(ie.display="flex");const de={...oe,className:["buttonContainer",b,l,w,c].filter(Boolean).join(" ")||void 0,style:ie,type:k||v||"button",onClick:t=>{f?.(t),x?.(t),t.defaultPrevented||e.onPress?.()}},pe=((e,t,r,a,n,o)=>e.renderContent?e.renderContent({index:t,isActive:!!e.active,defaultIcon:a,defaultLabel:n,defaultContent:o,vertical:r}):h?h({index:t,button:e,defaultIcon:a,defaultLabel:n,defaultContent:o,vertical:r}):o)(e,a,n,re,ae,ne);return g?(0,ce.jsx)(le().Fragment,{children:g({index:a,button:e,defaultButton:(0,ce.jsx)("button",{...de,children:pe}),defaultProps:de,vertical:n})},a):(0,ce.jsx)("button",{...de,children:pe},a)})})},fe={display:"flex",marginTop:5,marginBottom:5,elevation:9,zIndex:9},be={alignItems:"center",justifyContent:"center",padding:10,borderRadius:5,marginLeft:5,marginRight:5,cursor:"pointer",border:"none",backgroundColor:"transparent"},ye={flexDirection:"column"},xe={fontSize:12,marginTop:5},ve=({buttons:e,position:t="left",location:r="top",direction:a="horizontal",buttonsContainerStyle:n,alternateIconComponent:o,iconComponent:s,showAspect:i=!1,containerProps:c,buttonProps:d,buttonStyle:l,buttonClassName:u,iconWrapperProps:p,textProps:m,contentWrapperProps:g,renderButton:h,renderButtonContent:f,gap:b})=>{const y="vertical"===a,{className:x,style:v,...S}=c??{},R=["mediasfu-alt-buttons",x].filter(Boolean).join(" ")||void 0,w={...fe,...(()=>{const e={};return"left"!==t&&"right"!==t&&"middle"!==t||(e.justifyContent="left"===t?"flex-start":"right"===t?"flex-end":"center"),"top"!==r&&"bottom"!==r&&"center"!==r||(e.alignItems="top"===r?"flex-start":"bottom"===r?"flex-end":"center"),e.flexDirection=y?"column":"row",e})(),...void 0!==b?{gap:b}:{},...n,...v};i?w.display||(w.display="flex"):w.display="none";const{className:k,style:C,type:j,onClick:P,...M}=d??{},{style:I,className:A,...T}=p??{},{style:F,className:D,...N}=m??{},{style:L,className:V,...B}=g??{};return(0,ce.jsx)("div",{...S,className:R,style:w,children:e.map((e,t)=>{const{buttonProps:r,style:n,className:i,iconWrapperProps:c,textProps:d,contentWrapperProps:p}=e,{onClick:m,style:g,className:b,type:x,...v}=r??{},S=!1!==e.show,R={...M,...v,disabled:e.disabled??v?.disabled??M?.disabled},w=S?g?.backgroundColor??n?.backgroundColor??l?.backgroundColor??C?.backgroundColor??e.backgroundColor?.default??be.backgroundColor??"transparent":"transparent",$={...be,...S?{}:{display:"none"},...y?ye:{},backgroundColor:w,...C,...l,...g,...n};S&&!$.display&&($.display="flex");const E=["mediasfu-alt-button",k,u,b,i].filter(Boolean).join(" ")||void 0,W=x||j||"button",{style:H,className:O,...z}=p??{},U=["mediasfu-alt-button-content",V,O].filter(Boolean).join(" ")||void 0,q={display:"flex",alignItems:"center",gap:y?6:8,...L,...H},_={...B,...z,className:U,style:q},{style:G,className:Y,...K}=c??{},J=["mediasfu-alt-button-icon",A,Y].filter(Boolean).join(" ")||void 0,X={display:"flex",alignItems:"center",...I,...G},Z={...T,...K,className:J,style:X},{style:Q,className:ee,...te}=d??{},re=["mediasfu-alt-button-text",D,ee].filter(Boolean).join(" ")||void 0,ae={...xe,color:e.color||F?.color||"#ffffff",...F,...Q},ne={...N,...te,className:re,