js-test-meeting
Version:
我创建的第一个组件库
4 lines (3 loc) • 23 kB
JavaScript
(function(e,u){typeof exports=="object"&&typeof module<"u"?module.exports=u(require("vue")):typeof define=="function"&&define.amd?define(["vue"],u):(e=typeof globalThis<"u"?globalThis:e||self,e["zd-vin-package"]=u(e.Vue))})(this,function(e){"use strict";var ot=Object.defineProperty;var nt=(e,u,b)=>u in e?ot(e,u,{enumerable:!0,configurable:!0,writable:!0,value:b}):e[u]=b;var g=(e,u,b)=>nt(e,typeof u!="symbol"?u+"":u,b);const u=Object.assign({"./js-vin/components/mainContainer.vue":()=>Promise.resolve().then(()=>Oe),"./js-vin/components/memberContainer.vue":()=>Promise.resolve().then(()=>Ke),"./js-vin/components/toolbar.vue":()=>Promise.resolve().then(()=>Be),"./js-vin/meeting.vue":()=>Promise.resolve().then(()=>qe)}),b=h=>{for(const[t,o]of Object.entries(u)){const n=t.slice(t.lastIndexOf("/")+1,t.lastIndexOf("."));h.component(n,e.defineAsyncComponent(o))}};class ne{constructor(t,o,n){g(this,"connections",new Map);this.localStream=t,this.onTrack=o,this.sendSignal=n}async createPeerConnection(t){const o=new RTCPeerConnection;this.localStream.getTracks().forEach(n=>o.addTrack(n,this.localStream)),o.onicecandidate=n=>{n.candidate&&this.sendSignal(t,{type:"ice-candidate",candidate:n.candidate})},o.ontrack=n=>{const i=new MediaStream([n.track]);this.onTrack(t,i)},this.connections.set(t,o)}getPeerConnection(t){return this.connections.get(t)}async handleOffer(t,o){const n=this.connections.get(t);if(!n)return;await n.setRemoteDescription(o);const i=await n.createAnswer();await n.setLocalDescription(i),this.sendSignal(t,{type:"answer",answer:i})}async handleAnswer(t,o){const n=this.connections.get(t);n&&await n.setRemoteDescription(o)}async handleIceCandidate(t,o){const n=this.connections.get(t);n&&await n.addIceCandidate(o)}closeAll(){this.connections.forEach(t=>t.close()),this.connections.clear()}}async function ae(h,t={}){const{baseURL:o="",timeout:n=1e4,headers:i={},...m}=t,s=new AbortController,f=setTimeout(()=>s.abort(),n);try{const k=await fetch(o+h,{signal:s.signal,headers:{"Content-Type":"application/json",...i},...m});if(clearTimeout(f),!k.ok){const c=await k.text();throw new Error(`HTTP ${k.status}: ${c}`)}return await k.json()}catch(k){throw clearTimeout(f),new Error(k.message||"Request failed")}}class le{constructor(){g(this,"videoUIs",new Set)}register(t){this.videoUIs.add(t)}unregister(t){this.videoUIs.delete(t)}setSinkIdForAll(t){this.videoUIs.forEach(o=>{o.setSinkId(t)})}}const P=new le;class ie{constructor(t){g(this,"el");g(this,"videoElement");this.el=t,this.videoElement=document.createElement("video"),this.videoElement.autoplay=!0,this.videoElement.playsInline=!0,this.videoElement.style.height="100%",this.el.appendChild(this.videoElement),P.register(this)}async setVideo(t){console.log("[VideoUI] 设置视频:",t);{const o=this.videoElement;o.src="https://www.w3schools.com/html/mov_bbb.mp4",o.loop=!0,o.muted=!0,await o.play();return}}setSinkId(t){(typeof this.videoElement.sinkId=="string"||"setSinkId"in this.videoElement)&&this.videoElement.setSinkId(t).catch(console.error)}destroy(){this.videoElement.srcObject=null,this.el.removeChild(this.videoElement),P.unregister(this)}}class re{constructor(){g(this,"signaling");g(this,"rtc");g(this,"localStream");g(this,"token");g(this,"baseUrl");g(this,"userId");g(this,"streamUrl");g(this,"allowAudio");g(this,"eventMap",new Map);g(this,"localUser");g(this,"meetingId","")}async init(t){const{serverAddr:o,userId:n,streamUrl:i}=t;this.meetingId="",this.token="",this.userId=n,this.baseUrl=o||"",this.streamUrl=i||"http://192.168.40.51:8081"}handleServerMessage(t){var m,s,f;const{type:o,fromUserId:n,payload:i}=t;switch(o){case"login-result":this.emit("login-result",i);break;case"user-joined":this.emit("user-joined",i);break;case"user-left":this.emit("user-left",i);break;case"offer":(m=this.rtc)==null||m.handleOffer(n,i);break;case"answer":(s=this.rtc)==null||s.handleAnswer(n,i);break;case"ice-candidate":(f=this.rtc)==null||f.handleIceCandidate(n,i);break}}async startLocalStream(t={audio:!0,video:!0}){return this.localStream=await navigator.mediaDevices.getUserMedia(t),this.localStream}async getCaptureSources(){var t;try{return console.log("获取捕获源",this.baseUrl),await((t=window.BeethovenTerminal)==null?void 0:t.window.getCaptureSources())}catch(o){throw console.error("[SDK] 获取捕获源失败:",o),o}}async getDesktopStream(t){try{const o={audio:!1,video:{mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:30}}};return navigator.mediaDevices.getUserMedia(o)}catch(o){throw console.error("[SDK] 获取桌面流失败:",o),o}}async getDeviceStream(t){try{const o={video:{deviceId:{exact:t}}};return navigator.mediaDevices.getUserMedia(o)}catch(o){throw console.error("[SDK] 获取桌面流失败:",o),o}}async joinMeeting(){if(!this.localStream)throw new Error("Local stream not ready");this.rtc=new ne(this.localStream,(t,o)=>this.emit("stream-added",{userId:t,stream:o}),(t,o)=>this.signaling.send({...o,toUserId:t})),this.signaling.send({type:"join",userId:this.localUser.userId,meetingId:this.meetingId})}on(t,o){this.eventMap.has(t)||this.eventMap.set(t,[]),this.eventMap.get(t).push(o)}emit(t,o){var n;(n=this.eventMap.get(t))==null||n.forEach(i=>i(o))}leaveMeeting(){var t,o;this.signaling.send({type:"leave",userId:this.localUser.userId,meetingId:this.meetingId}),(t=this.localStream)==null||t.getTracks().forEach(n=>n.stop()),(o=this.rtc)==null||o.closeAll()}async getMicrophoneList(){try{return(await navigator.mediaDevices.enumerateDevices()).filter(n=>n.kind==="audioinput")}catch(t){throw console.error("获取麦克风列表失败:",t),t}}async getSpeakerList(){try{return(await navigator.mediaDevices.enumerateDevices()).filter(n=>n.kind==="audiooutput")}catch(t){throw console.error("获取扬声器列表失败:",t),t}}createVideoUI(t,o){const n=new ie(t);return o!=null&&o.notifyFrameReceived,n}setSinkId(t){console.log("设置扬声器输出:",t),P.setSinkIdForAll(t)}async getCameraList(){try{return(await navigator.mediaDevices.enumerateDevices()).filter(n=>n.kind==="videoinput")}catch(t){return console.error("获取摄像头列表失败:",t),[]}}async login(t){return new Promise((o,n)=>{(async()=>{try{const m=await ae("/meeting/sdk/account/login",{baseURL:this.baseUrl,method:"POST",body:JSON.stringify({userId:t})});m.state?(this.userId=t,console.log("登录成功:",this.userId),o(m)):n(new Error("登录失败"))}catch(m){n(m)}})()})}SetHighBitrate(t){const m="x-google-min-bitrate=8000;x-google-max-bitrate=10000;x-google-start-bitrate=8000",s=t.split(`
`);let f="";for(let c=0;c<s.length;c++)s[c].startsWith("a=rtpmap:")&&(s[c].includes("AV1")||s[c].includes("H264"))&&(f=s[c].split(" ")[0].split(":")[1]),f&&s[c].startsWith(`a=fmtp:${f}`)&&(s[c]=`${s[c]};${m}`);return s.join(`
`)}async pushStream(t,o){const n=t,i=new RTCPeerConnection;i.oniceconnectionstatechange=()=>{console.log("oniceconnectionstatechange",i.iceConnectionState)},i.onicecandidate=_=>{console.log("onicecandidate",_.candidate)},n.getTracks().forEach(_=>{i.addTrack(_,n)});const m=await i.createOffer();if(!m.sdp){console.error("offer.sdp is null");return}const s=this.SetHighBitrate(m.sdp);await i.setLocalDescription({type:"offer",sdp:s});let f="";o===1?f="share_":f="camera_";const c=await(await fetch(`${this.streamUrl}/webrtc/push/live/${f}${this.userId}`,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:s})).text();console.log("remoteSdp",new RTCSessionDescription({type:"answer",sdp:c})),await i.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:c}))}async screenShare(t){const{monitorID:o,catchWnd:n}=t,i=await this.getDesktopStream(o||n);this.pushStream(i,1)}async cameraSet(t){const o=await this.getDeviceStream(t);console.log("ssss",o),this.pushStream(o,0)}}const y=new re,se={class:"tool-list"},ce={class:"tool-item"},de=["title"],me=["title"],pe={class:"tool-item"},fe=["title"],ge={class:"tool-item"},he={class:"tool-item"},ue={class:"tool-item"},ke={class:"tool-item"},_e={class:"tool-item"},Ve={class:"tool-item"},we={class:"tool-item"},Ce={class:"share-screen-dialog"},ye={class:"share-screen-list"},Ne=["onClick"],Ee=["src"],be={style:{"margin-top":"10px"}},Se={class:"dialog-footer"},Ie=e.defineComponent({__name:"toolbar",setup(h){const t=e.ref([]),o=e.ref("default"),n=l=>l.replace(/\s*\([0-9a-f:]+\)\s*$/i,"").trim().replace("Default","系统默认");async function i(){t.value=(await y.getMicrophoneList()).filter(l=>l.kind==="audioinput"&&l.deviceId!=="communications"),t.value=t.value.map(l=>({deviceId:l.deviceId,kind:l.kind,groupId:l.groupId,label:n(l.label)}))}const m=e.ref([]),s=e.ref("default");async function f(){m.value=(await y.getSpeakerList()).filter(l=>l.kind==="audiooutput"&&l.deviceId!=="communications"),m.value=m.value.map(l=>({deviceId:l.deviceId,kind:l.kind,groupId:l.groupId,label:n(l.label)})),console.log("扬声器列表:",m.value)}function k(l){y.setSinkId(l)}const c=e.ref("default"),_=e.ref([]);async function D(){_.value=await y.getCameraList(),console.log("摄像头列表:",_.value),_.value=_.value.map(l=>({deviceId:l.deviceId,kind:l.kind,groupId:l.groupId,label:n(l.label)}))}const p=e.ref([]),S=e.ref([]),E=e.ref([]),w=e.ref("");async function R(){var a;const l=await y.getCaptureSources();p.value=l.filter(d=>d.type==="screen"),S.value=l.filter(d=>d.type==="window"),console.log("共享屏幕列表:",p.value,S.value),E.value=p.value,w.value=((a=p.value[0])==null?void 0:a.id)||""}function C(l){var a,d;l==="screen"?(E.value=p.value,w.value=((a=p.value[0])==null?void 0:a.id)||""):l==="window"&&(E.value=S.value,w.value=((d=S.value[0])==null?void 0:d.id)||"")}function N(){console.log("pushShareScreen",w.value),y.screenShare({monitorID:w.value})}function A(l){y.cameraSet(l)}const V=e.ref(!0),$=e.ref(),O=e.ref(!1),M=e.ref(!1),T=e.ref(!1),L=e.ref(!1);function B(){V.value=!V.value}function Ge(l){l.stopPropagation(),D(),O.value=!0,M.value=!0,T.value=!1,L.value=!1}function J(){M.value=!1,O.value=!1}const z=e.ref(!0),U=e.ref();function Je(l){l.stopPropagation(),i(),f(),L.value=!0,T.value=!0,M.value=!1,O.value=!1}function F(){T.value=!1,L.value=!1}function Q(){z.value=!z.value}function X(l){var d,I;const a=l.target;U.value&&!((d=U.value.popperRef)!=null&&d.contentRef.contains(a))&&F(),$.value&&!((I=$.value.popperRef)!=null&&I.contentRef.contains(a))&&J()}const x=e.ref(!1),H=e.ref("screen");function Y(){}function Qe(){console.log("toggleShareScreen",y),x.value=!0,H.value="screen",R()}function Xe(l){C(l)}function Ye(l){w.value=l}function Ze(){}function et(){N(),x.value=!1}return e.watch(()=>s.value,l=>{k(l)},{immediate:!0}),e.watch(()=>c.value,l=>{A(l)},{immediate:!0}),e.onMounted(()=>{document.addEventListener("click",X)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",X)}),(l,a)=>{const d=e.resolveComponent("Icon"),I=e.resolveComponent("el-radio"),j=e.resolveComponent("el-radio-group"),K=e.resolveComponent("el-divider"),Z=e.resolveComponent("el-popover"),ee=e.resolveComponent("el-radio-button"),te=e.resolveComponent("el-button"),tt=e.resolveComponent("el-dialog"),oe=e.resolveDirective("popover");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",se,[e.createElementVNode("div",ce,[z.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"icon-group",onClick:Q},[e.createVNode(d,{icon:"local-mic-out-round",class:"tool-item-icon"}),a[6]||(a[6]=e.createElementVNode("div",null,"静音",-1))])):(e.openBlock(),e.createElementBlock("div",{key:1,class:"icon-group",onClick:Q},[e.createVNode(d,{icon:"local-close-mic-out-round",class:"tool-item-icon"}),a[7]||(a[7]=e.createElementVNode("div",null,"解除静音",-1))])),e.withDirectives((e.openBlock(),e.createElementBlock("div",null,[L.value?(e.openBlock(),e.createBlock(d,{key:0,icon:"local-triangle-up"})):(e.openBlock(),e.createBlock(d,{key:1,icon:"local-triangle-down",onClick:Je}))])),[[oe,U.value]])]),e.createVNode(Z,{ref_key:"popoverAudioRef",ref:U,visible:T.value,trigger:"click","virtual-triggering":"",persistent:"",placement:"bottom",width:"450"},{default:e.withCtx(()=>[a[8]||(a[8]=e.createElementVNode("div",null," 选择麦克风 ",-1)),e.createVNode(j,{modelValue:o.value,"onUpdate:modelValue":a[0]||(a[0]=r=>o.value=r),size:"large"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,r=>(e.openBlock(),e.createBlock(I,{key:r.deviceId,value:r.deviceId,size:"large",onClick:F},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"el-radio-label",title:r.label},e.toDisplayString(r.label),9,de)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),e.createVNode(K),a[9]||(a[9]=e.createElementVNode("div",null," 选择扬声器 ",-1)),e.createVNode(j,{modelValue:s.value,"onUpdate:modelValue":a[1]||(a[1]=r=>s.value=r),size:"large"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,r=>(e.openBlock(),e.createBlock(I,{key:r.deviceId,value:r.deviceId,size:"large",onClick:F},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"el-radio-label",title:r.label},e.toDisplayString(r.label),9,me)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),e.createVNode(K),a[10]||(a[10]=e.createElementVNode("div",null," 音频设置 ",-1))]),_:1,__:[8,9,10]},8,["visible"]),e.createElementVNode("div",pe,[V.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"icon-group",onClick:B},[e.createVNode(d,{icon:"local-video-out-round",class:"tool-item-icon"}),a[11]||(a[11]=e.createElementVNode("div",null,"关摄像头",-1))])):(e.openBlock(),e.createElementBlock("div",{key:1,class:"icon-group",onClick:B},[e.createVNode(d,{icon:"local-close-camera-out-round",class:"tool-item-icon"}),a[12]||(a[12]=e.createElementVNode("div",null,"开摄像头",-1))])),e.withDirectives((e.openBlock(),e.createElementBlock("div",{onClick:Ge},a[13]||(a[13]=[e.createTextVNode(" 1 ")]))),[[oe,$.value]])]),e.createVNode(Z,{ref_key:"popoverCameraRef",ref:$,visible:M.value,trigger:"click",placement:"bottom","virtual-triggering":"",persistent:"",width:"450"},{default:e.withCtx(()=>[a[14]||(a[14]=e.createElementVNode("div",null," 选择摄像头 ",-1)),e.createVNode(j,{modelValue:c.value,"onUpdate:modelValue":a[2]||(a[2]=r=>c.value=r),size:"large"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,r=>(e.openBlock(),e.createBlock(I,{key:r.deviceId,value:r.deviceId,size:"large",onClick:J},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"el-radio-label",title:r.label},e.toDisplayString(r.label),9,fe)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),e.createVNode(K),a[15]||(a[15]=e.createElementVNode("div",null," 视频设置 ",-1))]),_:1,__:[14,15]},8,["visible"]),e.createElementVNode("div",ge,[e.createElementVNode("div",{class:"icon-group",onClick:Y},[e.createVNode(d,{icon:"local-invite-out-round",class:"tool-item-icon"}),a[16]||(a[16]=e.createElementVNode("div",null,"成员",-1))])]),e.createElementVNode("div",he,[e.createElementVNode("div",{class:"icon-group",onClick:Qe},[e.createVNode(d,{icon:"local-share-out-round",class:"tool-item-icon"}),a[17]||(a[17]=e.createElementVNode("div",null,"共享",-1))])]),e.createElementVNode("div",ue,[e.createElementVNode("div",{class:"icon-group",onClick:Y},[e.createVNode(d,{icon:"local-chat-outline",class:"tool-item-icon"}),a[18]||(a[18]=e.createElementVNode("div",null,"聊天",-1))])]),e.createElementVNode("div",ke,[e.createElementVNode("div",{class:"icon-group",onClick:B},[e.createVNode(d,{icon:"local-video-out-round",class:"tool-item-icon"}),a[19]||(a[19]=e.createElementVNode("div",null,"录制",-1))])]),e.createElementVNode("div",_e,[e.createElementVNode("div",{class:"icon-group",onClick:B},[e.createVNode(d,{icon:"local-setting",class:"tool-item-icon"}),a[20]||(a[20]=e.createElementVNode("div",null,"设置",-1))])]),e.createElementVNode("div",Ve,[e.createElementVNode("div",{class:"icon-group",onClick:B},[e.createVNode(d,{icon:"local-book-account",class:"tool-item-icon"}),a[21]||(a[21]=e.createElementVNode("div",null,"成为主持人",-1))])]),e.createElementVNode("div",we,[e.createElementVNode("div",{class:"icon-group",onClick:Ze},[e.createVNode(d,{icon:"local-screen-exchange-out-round",class:"tool-item-icon"}),a[22]||(a[22]=e.createElementVNode("div",null,"双屏模式",-1))])])]),e.createVNode(tt,{modelValue:x.value,"onUpdate:modelValue":a[5]||(a[5]=r=>x.value=r),width:"750",title:"选取视频流"},{footer:e.withCtx(()=>[e.createElementVNode("div",Se,[e.createVNode(te,{onClick:a[4]||(a[4]=r=>x.value=!1)},{default:e.withCtx(()=>a[23]||(a[23]=[e.createTextVNode(" 取消 ")])),_:1,__:[23]}),e.createVNode(te,{type:"primary",onClick:et},{default:e.withCtx(()=>a[24]||(a[24]=[e.createTextVNode(" 共享 ")])),_:1,__:[24]})])]),default:e.withCtx(()=>[e.createElementVNode("div",Ce,[e.createElementVNode("div",null,[e.createVNode(j,{modelValue:H.value,"onUpdate:modelValue":a[3]||(a[3]=r=>H.value=r),size:"large",onChange:Xe},{default:e.withCtx(()=>[e.createVNode(ee,{label:"屏幕",value:"screen"}),e.createVNode(ee,{label:"窗口",value:"window"})]),_:1},8,["modelValue"])]),e.createElementVNode("div",ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id,class:e.normalizeClass(["share-screen-item",{"is-active":r.id===w.value}]),onClick:rt=>Ye(r.id)},[r.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.thumbnail,alt:"缩略图",width:"150",height:"82"},null,8,Ee)):e.createCommentVNode("",!0),e.createElementVNode("strong",be,e.toDisplayString(r.name),1)],10,Ne))),128))])])]),_:1},8,["modelValue"])],64)}}}),v=(h,t)=>{const o=h.__vccOpts||h;for(const[n,i]of t)o[n]=i;return o},W=v(Ie,[["__scopeId","data-v-59adb0a4"]]),Be=Object.freeze(Object.defineProperty({__proto__:null,default:W},Symbol.toStringTag,{value:"Module"})),xe={class:"meeting-main-container"},ve={class:"container-header draggable"},De={class:"operation-button no-drag-region"},$e={class:"icon-button view-drop-down"},Me={class:"view-drop-down-class"},Te={key:0,class:"normal-container"},Le={style:{display:"flex","align-items":"center","flex-direction":"column"}},Ue={key:0,class:"video-box"},je={class:"container-content"},Pe={style:{width:"100%",height:"100%",display:"flex","justify-content":"center"}},Re={key:1,class:"grid-container"},Ae={class:"container-toolbar"},q=v(e.defineComponent({__name:"mainContainer",setup(h){const t=e.ref("normal"),o=e.ref(!1),n=e.ref(!1);function i(){}function m(){n.value=!0,o.value=!0}function s(){n.value=!1,o.value=!1,terminalStore.centerMeeting()}function f(D){t.value=D}const k=[{name:"张三",id:"user1"},{name:"李四",id:"user2"},{name:"王五",id:"user3"}],c=e.ref(!1);async function _(){}return(D,p)=>{const S=e.resolveComponent("icon-mdi:view-gallery"),E=e.resolveComponent("el-dropdown-item"),w=e.resolveComponent("el-dropdown-menu"),R=e.resolveComponent("el-dropdown"),C=e.resolveComponent("el-tooltip"),N=e.resolveComponent("Icon"),A=e.resolveDirective("setVideo");return e.openBlock(),e.createElementBlock("div",xe,[e.createElementVNode("div",ve,[p[5]||(p[5]=e.createElementVNode("div",{class:"meeting-info no-drag-region"},[e.createElementVNode("div",null,"早读片(会议号:123456789) | 13:56")],-1)),e.createElementVNode("div",De,[e.createElementVNode("div",$e,[e.createVNode(C,{placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(R,{onCommand:f},{dropdown:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(E,{command:"grid"},{default:e.withCtx(()=>p[3]||(p[3]=[e.createTextVNode(" 宫格 ")])),_:1,__:[3]}),e.createVNode(E,{command:"normal"},{default:e.withCtx(()=>p[4]||(p[4]=[e.createTextVNode(" 默认 ")])),_:1,__:[4]})]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("div",Me,[e.createVNode(S),p[2]||(p[2]=e.createTextVNode(" 布局设置 "))])]),_:1})]),_:1})]),e.createElementVNode("div",{class:"icon-button",onClick:i},[e.createVNode(C,{content:"最小化",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(N,{icon:"local-minimize"})]),_:1})]),n.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"icon-button",onClick:s},[e.createVNode(C,{content:"退出全屏",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(N,{icon:"local-fullscreen-exit",class:"full-screen"})]),_:1})])):(e.openBlock(),e.createElementBlock("div",{key:1,class:"icon-button",onClick:m},[e.createVNode(C,{content:"全屏",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(N,{icon:"local-fullscreen",class:"full-screen"})]),_:1})])),e.createElementVNode("div",{class:"icon-button",onClick:_},[e.createVNode(C,{content:"关闭",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(N,{icon:"local-close"})]),_:1})])])]),t.value==="normal"?(e.openBlock(),e.createElementBlock("div",Te,[e.createElementVNode("div",Le,[c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ue,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,V=>e.createElementVNode("div",{key:V.id,class:"video-box-item"},[e.createElementVNode("div",null,e.toDisplayString(V.name),1)])),64))])),c.value?(e.openBlock(),e.createElementBlock("div",{key:2,onClick:p[1]||(p[1]=V=>c.value=!1)},[e.createVNode(C,{content:"展开成员列表",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(N,{icon:"local-chevron-double-down"})]),_:1})])):(e.openBlock(),e.createElementBlock("div",{key:1,onClick:p[0]||(p[0]=V=>c.value=!0)},[e.createVNode(C,{content:"收起成员列表",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(N,{icon:"local-chevron-double-up"})]),_:1})]))]),e.createElementVNode("div",je,[e.withDirectives(e.createElementVNode("div",Pe,null,512),[[A,{type:0,userId:"user1",camId:0}]])])])):e.createCommentVNode("",!0),t.value==="grid"?(e.openBlock(),e.createElementBlock("div",Re,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,V=>e.createElementVNode("div",{key:V.id,class:"grid-box-item"},[e.createElementVNode("div",null,e.toDisplayString(V.name),1)])),64))])):e.createCommentVNode("",!0),e.createElementVNode("div",Ae,[e.createVNode(W)])])}}}),[["__scopeId","data-v-97ac15f0"]]),Oe=Object.freeze(Object.defineProperty({__proto__:null,default:q},Symbol.toStringTag,{value:"Module"})),ze={},Fe={class:"member-container"};function He(h,t){return e.openBlock(),e.createElementBlock("div",Fe," 成员 ")}const G=v(ze,[["render",He],["__scopeId","data-v-72303ac4"]]),Ke=Object.freeze(Object.defineProperty({__proto__:null,default:G},Symbol.toStringTag,{value:"Module"})),We={class:"meeting-container"},qe=Object.freeze(Object.defineProperty({__proto__:null,default:v(e.defineComponent({__name:"meeting",setup(h){return(t,o)=>(e.openBlock(),e.createElementBlock("div",We,[e.createVNode(q),e.createVNode(G,{draggable:"false"})]))}}),[["__scopeId","data-v-643b5c00"]])},Symbol.toStringTag,{value:"Module"}));return b});