"use strict";
var Lt=Object.create;var Ne=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var At=Object.getOwnPropertyNames;var Bt=Object.getPrototypeOf,Jt=Object.prototype.hasOwnProperty;var ze=e=>Ne(e,"__esModule",{value:!0});var Xt=(e,g)=>{ze(e);for(var v in g)Ne(e,v,{get:g[v],enumerable:!0})},It=(e,g,v)=>{if(g&&typeof g=="object"||typeof g=="function")for(let P of At(g))!Jt.call(e,P)&&P!=="default"&&Ne(e,P,{get:()=>g[P],enumerable:!(v=Rt(g,P))||v.enumerable});return e},R=e=>It(ze(Ne(e!=null?Lt(Bt(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);Xt(exports,{AudioRenderer:()=>He,AudioSelectButton:()=>Oe,ControlButton:()=>Se,ControlsView:()=>Pe,DisplayContext:()=>Ye,LiveKitRoom:()=>Ht,ParticipantView:()=>be,ScreenShareView:()=>Ve,StageView:()=>je,VideoRenderer:()=>Ee,VideoSelectButton:()=>De,createParticipant:()=>Te,createRoom:()=>Ue,sortParticipants:()=>Qe,useDisplay:()=>Me});var Le=R(require("solid-js")),He=e=>{let g;return(0,Le.createEffect)(()=>{e.isLocal||(g=e.track.attach(),e.track.sid&&g.setAttribute("data-audio-track-id",e.track.sid)),(0,Le.onCleanup)(()=>{e.track.detach().forEach(v=>v.remove())})}),null};var K=R(require("solid-js")),Re=R(require("solid-icons/fa")),Ke=R(require("livekit-client"));var W=R(require("solid-js")),$e=R(require("solid-icons/fa"));var Fe=R(require("solid-js")),ee=R(require("solid-headless")),We=R(require("solid-popper")),Ze=e=>{var E;let[g,v]=(0,Fe.createSignal)(),[P,N]=(0,Fe.createSignal)();return(0,We.default)(g,P,{placement:(E=e.placement)!=null?E:"auto"}),<ee.Popover isOpen={e.isOpen}>{({isOpen:V})=><><ee.PopoverButton ref={v}type="button">{e.children}</ee.PopoverButton><ee.Transition show={V()}><ee.PopoverPanel ref={N}>{e.content}</ee.PopoverPanel></ee.Transition></>}</ee.Popover>};var Se=e=>{let[g,v]=(0,W.createSignal)(!1),[P,N]=(0,W.createSignal)("button");(0,W.createEffect)(()=>{e.className&&N(S=>e.className?`${S} ${e.className}`:S),e.menuItems&&e.menuItems.length>0&&N(S=>`${S} hasDropdown`)});let E=S=>{v(!1),e.onMenuItemClick&&e.onMenuItemClick(S)},V=()=><W.Show when={e.menuItems}>{S=>{var M,T;return<W.Show when={S.length>0}><button disabled={e.disabled}classList={{"button dropdown":!0,[(M=e.popoverTriggerBtnClassName)!=null?M:""]:!!e.popoverTriggerBtnClassName}}><div classList={{separator:!0,[(T=e.popoverTriggerBtnSeparatorClassName)!=null?T:""]:!!e.popoverTriggerBtnSeparatorClassName}}/><$e.FaSolidChevronDown height={32}/></button></W.Show>}}</W.Show>,C=()=><W.Show when={e.menuItems}>{S=>{var M;return<W.Show when={S.length>0}><div classList={{popoverMenu:!0,[(M=e.popoverContainerClassName)!=null?M:""]:!!e.popoverContainerClassName}}><ul className="list"><W.For each={S}>{T=><li onClick={()=>E(T)}>{T.label}</li>}</W.For></ul></div></W.Show>}}</W.Show>;return<Ze isOpen={g()}placement="top"content={<C/>}><div className="buttonWrapper"><button disabled={e.disabled}className={P()}onClick={()=>{e.onClick&&e.onClick()}}><W.Show when={e.icon}>{S=>S}</W.Show>{e.label}</button><V/></div></Ze>};var Oe=e=>{let g=(0,K.mergeProps)({muteText:"Mute",unmuteText:"Unmute"},e),[v,P]=(0,K.createSignal)([]),[N,E]=(0,K.createSignal)([]),V=()=>{Ke.Room.getLocalDevices("audioinput").then(M=>{P(M),E(M.map(T=>({label:T.label})))},console.error)};(0,K.createEffect)(()=>{V(),navigator.mediaDevices.addEventListener("devicechange",V),(0,K.onCleanup)(()=>{navigator.mediaDevices.removeEventListener("devicechange",V)})});let C=M=>{let T=v().find(k=>k.label===M.label);T&&e.onSourceSelected&&e.onSourceSelected(T)},S=()=><K.Show when={e.isMuted}fallback={<Re.FaSolidMicrophone className="icon"height={32}/>}><Re.FaSolidMicrophoneSlash className="icon"height={32}/></K.Show>;return<Se label={e.isMuted?g.unmuteText:g.muteText}icon={<S/>}onClick={e.onClick}menuItems={N()}onMenuItemClick={C}className={e.className}popoverContainerClassName={e.popoverContainerClassName}popoverTriggerBtnClassName={e.popoverTriggerBtnClassName}popoverTriggerBtnSeparatorClassName={e.popoverTriggerBtnSeparatorClassName}/>};var ge=R(require("solid-js")),Be=R(require("solid-icons/fa"));var Z=R(require("solid-js")),A=R(require("livekit-client"));function Te(e){let[g,v]=(0,Z.createSignal)(!1),[P,N]=(0,Z.createSignal)(!1),[E,V]=(0,Z.createSignal)(e.connectionQuality),[C,S]=(0,Z.createSignal)(!1),[M,T]=(0,Z.createSignal)(),[k,j]=(0,Z.createSignal)([]),[L,$]=(0,Z.createSignal)([]),H=()=>{let B=Array.from(e.tracks.values());j(B),$(B.filter(z=>z.isSubscribed&&z.track!==void 0))},_=B=>{B.kind===A.Track.Kind.Audio?v(!0):B.kind===A.Track.Kind.Video&&N(!0)},Q=B=>{B.kind===A.Track.Kind.Audio?v(!1):B.kind===A.Track.Kind.Video&&N(!1)},F=()=>{e.metadata&&T(e.metadata)},J=()=>{S(e.isSpeaking)},I=()=>{V(e.connectionQuality)};return(0,Z.createEffect)(()=>{e.on(A.ParticipantEvent.TrackMuted,_).on(A.ParticipantEvent.TrackUnmuted,Q).on(A.ParticipantEvent.ParticipantMetadataChanged,F).on(A.ParticipantEvent.IsSpeakingChanged,J).on(A.ParticipantEvent.TrackPublished,H).on(A.ParticipantEvent.TrackUnpublished,H).on(A.ParticipantEvent.TrackSubscribed,H).on(A.ParticipantEvent.TrackUnsubscribed,H).on(A.ParticipantEvent.LocalTrackPublished,H).on(A.ParticipantEvent.LocalTrackUnpublished,H).on(A.ParticipantEvent.ConnectionQualityChanged,I),F(),J(),H()}),(0,Z.onCleanup)(()=>{e.off(A.ParticipantEvent.TrackMuted,_).off(A.ParticipantEvent.TrackUnmuted,Q).off(A.ParticipantEvent.ParticipantMetadataChanged,F).off(A.ParticipantEvent.IsSpeakingChanged,J).off(A.ParticipantEvent.TrackPublished,H).off(A.ParticipantEvent.TrackUnpublished,H).off(A.ParticipantEvent.TrackSubscribed,H).off(A.ParticipantEvent.TrackUnsubscribed,H).off(A.ParticipantEvent.LocalTrackPublished,H).off(A.ParticipantEvent.LocalTrackUnpublished,H).off(A.ParticipantEvent.ConnectionQualityChanged,I)}),(0,Z.createEffect)(()=>{let B;e.audioTracks.forEach(z=>{B=z.isMuted}),typeof B=="undefined"&&(B=!0),v(z=>z!==B?!!B:z),N(z=>z!==B?!!B:z)}),()=>({isLocal:e instanceof A.LocalParticipant,isSpeaking:C(),isAudioMuted:g(),isVideoMuted:P(),connectionQuality:E(),publications:k(),subscribedTracks:L(),cameraPublication:e.getTrack(A.Track.Source.Camera),microphonePublication:e.getTrack(A.Track.Source.Microphone),screenSharePublication:e.getTrack(A.Track.Source.ScreenShare),metadata:M(),tracks:e.tracks})}var G=R(require("solid-js")),Ae=R(require("solid-icons/fa")),Ge=R(require("livekit-client"));var De=e=>{let g=(0,G.mergeProps)({disableText:"Disable Video",enableText:"Enable Video"},e),[v,P]=(0,G.createSignal)([]),[N,E]=(0,G.createSignal)([]),V=()=>{Ge.Room.getLocalDevices("videoinput").then(M=>{P(M),E(M.map(T=>({label:T.label})))},console.error)};(0,G.createEffect)(()=>{V(),navigator.mediaDevices.addEventListener("devicechange",V),(0,G.onCleanup)(()=>{navigator.mediaDevices.removeEventListener("devicechange",V)})});let C=M=>{let T=v().find(k=>k.label===M.label);T&&e.onSourceSelected&&e.onSourceSelected(T)},S=()=><G.Show when={e.isEnabled}fallback={<Ae.FaSolidVideoSlash className="icon"height={32}/>}><Ae.FaSolidVideo className="icon"height={32}/></G.Show>;return<Se label={e.isEnabled?g.disableText:g.enableText}icon={<S/>}onClick={e.onClick}menuItems={N()}onMenuItemClick={C}className={e.className}popoverContainerClassName={e.popoverContainerClassName}popoverTriggerBtnClassName={e.popoverTriggerBtnClassName}popoverTriggerBtnSeparatorClassName={e.popoverTriggerBtnSeparatorClassName}/>};var Pe=e=>{let g=(0,ge.mergeProps)({enableScreenShare:!0,enableVideo:!0,enableAudio:!0},e),v=Te(e.room.localParticipant),P=()=>v().cameraPublication,N=()=>{let C=e.room.localParticipant.isMicrophoneEnabled;return<ge.Show when={g.enableAudio}><Oe isMuted={!C}onClick={()=>e.room.localParticipant.setMicrophoneEnabled(!C)}onSourceSelected={S=>e.room.switchActiveDevice("audioinput",S.deviceId)}/></ge.Show>},E=()=>{var S,M;let C=!((M=(S=P())==null?void 0:S.isMuted)!=null?M:!0);return<ge.Show when={g.enableVideo}><De isEnabled={C}onClick={()=>e.room.localParticipant.setCameraEnabled(!C)}onSourceSelected={T=>{e.room.switchActiveDevice("videoinput",T.deviceId).catch(console.error)}}/></ge.Show>},V=()=>{let C=e.room.localParticipant.isScreenShareEnabled,S=()=><ge.Show when={C}fallback={<Be.FaSolidDesktop className="icon"height={32}/>}><Be.FaSolidStop className="icon"height={32}/></ge.Show>;return<ge.Show when={g.enableScreenShare}><Se label={C?"Stop sharing":"Share screen"}icon={<S/>}onClick={()=>{C?e.room.localParticipant.setScreenShareEnabled(!1).catch(console.error):e.room.localParticipant.setScreenShareEnabled(!0).catch(console.error)}}/></ge.Show>};return<div className="controlsWrapper"><N/><E/><V/><ge.Show when={e.onLeave}>{C=><Se label="End"className="dangerButton"onClick={()=>{e.room.disconnect(),C(e.room)}}/>}</ge.Show></div>};var Je=R(require("solid-js")),Ye=(0,Je.createContext)({stageLayout:"grid",showStats:!1}),Me=()=>(0,Je.useContext)(Ye);var X=R(require("solid-js")),bt=R(require("solid-aspect-ratio")),Xe=R(require("solid-icons/fa")),ke=R(require("livekit-client"));function _e(){return<svg width="9"height="9"viewBox="0 0 9 9"fill="none"xmlns="http://www.w3.org/2000/svg"><path d="M0 6H2V9H0V6Z"fill="#981010"/><path d="M3.5 3H5.5V9H3.5V3Z"fill="#1A1B1D"/><path d="M7 0H9V9H7V0Z"fill="#1A1B1D"/></svg>}function St(){return<svg width="9"height="9"viewBox="0 0 9 9"fill="none"xmlns="http://www.w3.org/2000/svg"><path d="M0 6H2V9H0V6Z"fill="#F89C13"/><path d="M3.5 3H5.5V9H3.5V3Z"fill="#F89C13"/><path d="M7 0H9V9H7V0Z"fill="#1A1B1D"/></svg>}function Pt(){return<svg width="9"height="9"viewBox="0 0 9 9"fill="none"xmlns="http://www.w3.org/2000/svg"><path d="M0 6H2V9H0V6Z"fill="#28994E"/><path d="M3.5 3H5.5V9H3.5V3Z"fill="#28994E"/><path d="M7 0H9V9H7V0Z"fill="#28994E"/></svg>}var ve=R(require("solid-js"));var Ee=e=>{var V,C;let[g,v]=(0,ve.createSignal)(null);(0,ve.createEffect)(()=>{let S=g();S&&(S.muted=!0,e.track.attach(S)),(0,ve.onCleanup)(()=>{S&&e.track.detach(S)})});let P=S=>{S.target instanceof HTMLVideoElement&&e.onSizeChanged&&e.onSizeChanged(S.target.videoWidth,S.target.videoHeight)};(0,ve.createEffect)(()=>{let S=g();S&&S.addEventListener("resize",P),(0,ve.onCleanup)(()=>{S==null||S.removeEventListener("resize",P)})});let N=((V=e.track.mediaStreamTrack)==null?void 0:V.getSettings().facingMode)!=="environment",E=()=>{let S={transform:e.isLocal&&N?"rotateY(180deg)":"",width:e.width,height:e.height};return e.objectFit&&(S["object-fit"]=e.objectFit),S};return<video ref={v}className={(C=e.className)!=null?C:"video"}style={E()}/>};var be=e=>{var F;let g=Te(e.participant),[v,P]=(0,X.createSignal)(),[N,E]=(0,X.createSignal)(),[V,C]=(0,X.createSignal)("contain"),[S,M]=(0,X.createSignal)(),[T,k]=(0,X.createSignal)(e.displayName),j=Me(),L=(J,I)=>{P(`${J}x${I}`)};(0,X.createEffect)(()=>{let J=setInterval(()=>{let I=0;e.participant.tracks.forEach(B=>{(B.track instanceof ke.LocalTrack||B.track instanceof ke.RemoteTrack)&&(I+=B.track.currentBitrate)}),E(I)},1e3);(0,X.onCleanup)(()=>clearInterval(J))});let $={width:e.width,height:e.height},{orientation:H}=e;!e.orientation&&e.aspectWidth&&e.aspectHeight&&(H=e.aspectWidth>e.aspectHeight?"landscape":"portrait"),(0,X.createEffect)(()=>{var I;let J=(I=g().cameraPublication)==null?void 0:I.dimensions;if(J){let B=J.width>J.height?"landscape":"portrait";M(B)}}),(0,X.createEffect)(()=>{S()===H&&C("cover")}),(0,X.createEffect)(()=>{k(J=>{if(!J){let I=g().isLocal?" (You)":"";return`${e.participant.name||e.participant.identity}${I}`}return J})});let _=()=>{var I,B,z;let J=()=>g().cameraPublication;return<X.Show when={((I=J())==null?void 0:I.isSubscribed)&&!((B=J())==null?void 0:B.isMuted)&&((z=J())==null?void 0:z.track)}fallback={<div className="placeholder"/>}>{xe=><Ee track={xe}isLocal={g().isLocal}objectFit={V()}width="100%"height="100%"onSizeChanged={L}/>}</X.Show>},Q=e.speakerClassName||"speaker";return<div classList={{participant:!0,[(F=e.className)!=null?F:""]:!!e.className,[Q]:g().isSpeaking}}style={$}onMouseEnter={e.onMouseEnter}onMouseLeave={e.onMouseLeave}onClick={e.onClick}><X.Show when={e.aspectWidth}fallback={<_/>}>{J=><X.Show when={e.aspectHeight}fallback={<_/>}>{I=><bt.default ratio={J/I}><_/></bt.default>}</X.Show>}</X.Show><X.Show when={e.showOverlay||j.showStats}><div className="participantBar"><div className="name">{T}</div><div className="center"><X.Show when={j.showStats}><div className="stats"><div>{v}</div><X.Show when={N()}>{J=><X.Show when={J>0}><div>{Math.round(J/1024)} kbps</div></X.Show>}</X.Show></div></X.Show></div><div><X.Show when={e.showConnectionQuality}><X.Switch><X.Match when={g().connectionQuality===ke.ConnectionQuality.Excellent}><Pt/></X.Match><X.Match when={g().connectionQuality===ke.ConnectionQuality.Good}><St/></X.Match><X.Match when={g().connectionQuality===ke.ConnectionQuality.Poor}><_e/></X.Match></X.Switch></X.Show></div><div><X.Show when={e.participant.isMicrophoneEnabled}fallback={<Xe.FaSolidMicrophoneSlash height={24}className="iconRed"/>}><Xe.FaSolidMicrophone height={24}className="iconGreen"/></X.Show></div></div></X.Show></div>};var Ve=e=><div className="screenShare"><Ee track={e.track}isLocal={!1}width={e.width}height={e.height}/></div>;var Y=R(require("solid-js")),Vt=R(require("solid-icons/fa")),xt=R(require("livekit-client")),Nt=R(require("@solid-primitives/media"));var U=R(require("solid-js"));var Ct=e=>{let[g,v]=(0,U.createSignal)([]),[P,N]=(0,U.createSignal)(!1),[E,V]=(0,U.createSignal)("grid1x1");return(0,U.createEffect)(()=>{let C=1,S=e.roomState.participants.length;S===1?V("grid1x1"):S===2?(V("grid2x1"),C=2):S<=4?(V("grid2x2"),C=Math.min(S,4)):S<=9?(V("grid3x3"),C=Math.min(S,9)):S<=16?(V("grid4x4"),C=Math.min(S,16)):(V("grid5x5"),C=Math.min(S,25)),v(M=>{var j;let T=[],k=e.roomState.room();return M.forEach(L=>{((k==null?void 0:k.participants.has(L.sid))||(k==null?void 0:k.localParticipant.sid)===L.sid)&&T.push(L)}),(j=k==null?void 0:k.activeSpeakers)==null||j.forEach(L=>{if(T.includes(L)||L!==(k==null?void 0:k.localParticipant)&&!(k==null?void 0:k.participants.has(L.sid)))return;let $=T.findIndex(H=>!H.isSpeaking);$>=0?T[$]=L:T.push(L)}),e.roomState.participants().forEach(L=>{let $=T.length>=C,H=T.includes(L)||L.isSpeaking;!$&&!H&&T.push(L)}),T.length>C&&T.splice(C,T.length-C),T})}),<U.Switch fallback={()=>{var M,T;let C=(M=e.participantRenderer)!=null?M:be,S=(T=e.controlRenderer)!=null?T:Pe;return<div className="container"><div className={`gridStage ${E()}`}><U.For each={g()}>{k=><C participant={k}orientation="landscape"width="100%"height="100%"showOverlay={P()}showConnectionQuality onMouseEnter={()=>N(!0)}onMouseLeave={()=>N(!1)}/>}</U.For></div><div className="controlsArea"><U.Show when={e.roomState.room()}>{k=><S room={k}onLeave={e.onLeave}/>}</U.Show></div></div>}}><U.Match when={e.roomState.error()}>{C=><div>error: {C==null?void 0:C.message}</div>}</U.Match><U.Match when={e.roomState.isConnecting()}>{()=><div>connecting</div>}</U.Match><U.Match when={!e.roomState.room()}>{()=><div>room closed</div>}</U.Match><U.Match when={!e.roomState.participants().length}>{()=><div>no one is in the room</div>}</U.Match></U.Switch>};var O=R(require("solid-js")),Tt=R(require("livekit-client"));var Mt=e=>{let[g,v]=(0,O.createSignal)(!1);return<O.Switch fallback={()=>{var M,T;let P=(M=e.participantRenderer)!=null?M:be,N=(T=e.controlRenderer)!=null?T:Pe,[E,V]=(0,O.createSignal)();(0,O.createEffect)(()=>{e.roomState.participants().forEach(k=>{V(j=>{if(!j){let L=k.getTrack(Tt.Track.Source.ScreenShare);if((L==null?void 0:L.isSubscribed)&&L.videoTrack)return L.videoTrack}return j})})});let C=e.roomState.participants,S=()=><O.Show when={E()}fallback={<O.Show when={e.roomState.participants()[0]}>{k=><P participant={k}width="100%"height="100%"orientation="landscape"showOverlay={g()}showConnectionQuality onMouseEnter={()=>v(!0)}onMouseLeave={()=>v(!1)}/>}</O.Show>}>{k=><Ve track={k}height="100%"width="100%"/>}</O.Show>;return<div className="container"><div className="stage"><div className="stageCenter"><S/></div><div className="sidebar"><O.For each={C()}>{k=><P participant={k}width="100%"aspectWidth={16}aspectHeight={9}showOverlay={g()}onMouseEnter={()=>v(!0)}onMouseLeave={()=>v(!1)}/>}</O.For></div></div><div className="controlsArea"><O.Show when={e.roomState.room()}>{k=><N room={k}enableScreenShare={!1}onLeave={e.onLeave}/>}</O.Show></div></div>}}><O.Match when={e.roomState.error()}>{P=><div>error: {P==null?void 0:P.message}</div>}</O.Match><O.Match when={e.roomState.isConnecting()}>{()=><div>connecting</div>}</O.Match><O.Match when={!e.roomState.room()}>{()=><div>room closed</div>}</O.Match><O.Match when={!e.roomState.participants().length}>{()=><div>no one is in the room</div>}</O.Match></O.Switch>};var D=R(require("solid-js")),yt=R(require("livekit-client"));var Et=e=>{let[g,v]=(0,D.createSignal)(!1);return<D.Switch fallback={()=>{var M,T;let P=(M=e.participantRenderer)!=null?M:be,N=(T=e.controlRenderer)!=null?T:Pe,[E,V]=(0,D.createSignal)();(0,D.createEffect)(()=>{e.roomState.participants().forEach(k=>{V(j=>{if(!j){let L=k.getTrack(yt.Track.Source.ScreenShare);if((L==null?void 0:L.isSubscribed)&&L.videoTrack)return L.videoTrack}return j})})});let C=e.roomState.participants,S=()=><D.Show when={E()}fallback={<D.Show when={e.roomState.participants()[0]}>{k=><P participant={k}showOverlay={g()}width="100%"height="100%"orientation="portrait"showConnectionQuality onMouseEnter={()=>v(!0)}onMouseLeave={()=>v(!1)}/>}</D.Show>}>{k=><Ve track={k}height="100%"width="100%"/>}</D.Show>;return<div className="container"><div className="stage"><S/></div><div className="participantsArea"><D.For each={C()}>{k=><P participant={k}className="participant"aspectWidth={4}aspectHeight={3}showOverlay={g()}onMouseEnter={()=>v(!0)}onMouseLeave={()=>v(!1)}/>}</D.For></div><div className="controlsArea"><D.Show when={e.roomState.room()}>{k=><N room={k}enableScreenShare={!1}onLeave={e.onLeave}/>}</D.Show></div></div>}}><D.Match when={e.roomState.error()}>{P=><div>error: {P==null?void 0:P.message}</div>}</D.Match><D.Match when={e.roomState.isConnecting()}>{()=><div>connecting</div>}</D.Match><D.Match when={!e.roomState.room()}>{()=><div>room closed</div>}</D.Match><D.Match when={!e.roomState.participants().length}>{()=><div>no one is in the room</div>}</D.Match></D.Switch>};var je=e=>{var N;let g=(0,Nt.default)("(min-width: 800px)"),v=Me(),P=()=><Y.Show when={g()}fallback={<Et{...e}/>}>{()=>{let[E,V]=(0,Y.createSignal)();return(0,Y.createEffect)(()=>{e.roomState.participants().forEach(C=>{V(S=>{if(!S){let M=C.getTrack(xt.Track.Source.ScreenShare);if((M==null?void 0:M.isSubscribed)&&M.videoTrack)return M.videoTrack}return S})})}),<Y.Show when={v.stageLayout==="grid"&&E===void 0}fallback={<Mt{...e}/>}><Ct{...e}/></Y.Show>}}</Y.Show>;return<div className="container"><P/><Y.For each={e.roomState.audioTracks()}>{E=><He track={E}isLocal={!1}/>}</Y.For><Y.Show when={((N=e.roomState.room())==null?void 0:N.canPlaybackAudio)===!1}><div className="overlay"><button className="unmuteButton"onClick={()=>{var E;(E=e.roomState.room())==null||E.startAudio().catch(console.error)}}><Vt.FaSolidVolumeMute className="icon"size="1x"/>Click to Unmute</button></div></Y.Show></div>};var Ce=R(require("solid-js"));var we=R(require("solid-js")),Ie=R(require("livekit-client"));function Qe(e,g){if(e.sort((v,P)=>{var V,C,S,M,T,k,j,L;if(v.isSpeaking&&P.isSpeaking)return P.audioLevel-v.audioLevel;if(v.isSpeaking!==P.isSpeaking)return v.isSpeaking?-1:1;if(v.lastSpokeAt!==P.lastSpokeAt){let $=(C=(V=v.lastSpokeAt)==null?void 0:V.getTime())!=null?C:0;return((M=(S=P.lastSpokeAt)==null?void 0:S.getTime())!=null?M:0)-$}let N=v.videoTracks.size>0,E=P.videoTracks.size>0;return N!==E?N?-1:1:((k=(T=v.joinedAt)==null?void 0:T.getTime())!=null?k:0)-((L=(j=P.joinedAt)==null?void 0:j.getTime())!=null?L:0)}),g){let v=e.indexOf(g);v>=0&&(e.splice(v,1),e.length>0?e.splice(1,0,g):e.push(g))}}function Ue(e){var L;let[g,v]=(0,we.createSignal)(),[P,N]=(0,we.createSignal)(!1),[E,V]=(0,we.createSignal)(),[C,S]=(0,we.createSignal)([]),[M,T]=(0,we.createSignal)([]),k=(L=e==null?void 0:e.sortParticipants)!=null?L:Qe;return{connect:async($,H,_)=>{N(!0);try{let Q=await(0,Ie.connect)($,H,_);v(Q);let F=()=>{let I=Array.from(Q.participants.values()),B=[Q.localParticipant,...I];k(B,Q.localParticipant),S(B)},J=I=>{if(F(),!I||I.kind===Ie.Track.Kind.Audio){let B=[];Q.participants.forEach(z=>{z.audioTracks.forEach(({audioTrack:xe})=>{xe&&B.push(xe)})}),T(B)}};return Q.once("disconnected",()=>{let I=setTimeout(()=>v(void 0));Q.off("participantConnected",F).off("participantDisconnected",F).off("activeSpeakersChanged",F).off("trackSubscribed",J).off("trackUnsubscribed",J).off("localTrackPublished",F).off("localTrackUnpublished",F).off("audioPlaybackChanged",F),(0,we.onCleanup)(()=>clearTimeout(I))}),Q.on("participantConnected",F).on("participantDisconnected",F).on("activeSpeakersChanged",F).on("trackSubscribed",J).on("trackUnsubscribed",J).on("localTrackPublished",F).on("localTrackUnpublished",F).on("audioPlaybackChanged",F),N(!1),J(),Q}catch(Q){N(!1),Q instanceof Error?V(Q):V(new Error("an error has occured"));return}},isConnecting:P,room:g,error:E,participants:C,audioTracks:M}}var Ht=e=>{var N;let g=(0,Ce.mergeProps)({connectOptions:{}},e),v=Ue({sortParticipants:e.sortParticipants});return(0,Ce.createEffect)(async()=>{try{let E=await v.connect(e.url,e.token,g.connectOptions);if(!E)return;e.onConnected&&e.onConnected(E),(0,Ce.onCleanup)(()=>{E.disconnect()})}catch(E){console.error(E)}}),((N=e.stageRenderer)!=null?N:je)({roomState:v,participantRenderer:e.participantRenderer,controlRenderer:e.controlRenderer,onLeave:e.onLeave})};0&&(module.exports={AudioRenderer,AudioSelectButton,ControlButton,ControlsView,DisplayContext,LiveKitRoom,ParticipantView,ScreenShareView,StageView,VideoRenderer,VideoSelectButton,createParticipant,createRoom,sortParticipants,useDisplay});
//# sourceMappingURL=index.jsx.map
