1import{d as Rt,e as Dt,ay as Bt,a6 as At,c as Q,b as i,G as $t,aF as x,L as Ht,aK as Lt,w as he,f as C,h as a,p as K,i as s,t as p,j as _,l as S,m as M,g as D,n as z,_ as Z,O as jt,D as Ft,Q as Ot,ac as It,ad as Nt,T as Xt,aO as Ut,x as T,F as zt,s as Yt,q as Wt,v as f}from"./index.16ba4ea0.js";import{_ as tt}from"./Loader.vue_vue_type_script_setup_true_lang.322b4473.js";import{_ as qt}from"./ThreeJS.vue_vue_type_script_setup_true_lang.af0f9bd6.js";import{s as Gt,r as Jt,g as Qt,d as Kt,p as Zt,f as eo}from"./vendor-tfjs.9e8265da.js";import"./vendor-highcharts.9b480a8e.js";import"https://cdn.jsdelivr.net/npm/[email protected]/dist/buttplug-wasm.mjs";import"./vendor-threejs.ada2e648.js";const to={class:"m-3.5"},oo={class:"flex"},so={class:"m-3.5"},ao={class:"flex"},no={class:"p-4"},lo={class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},io={class:"text-white font-medium text-xl"},ro={class:"absolute"},co={class:"flex gap-x-1.5 ml-auto"},uo={class:"flex mt-2 gap-2"},fo=["value"],vo={class:"p-4"},mo={class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},ho={class:"w-full"},po={class:"border border-zinc-700 flex relative rounded-md"},go={key:1,class:"absolute flex h-full w-full hover:bg-gray-800 text-gray-800 hover:text-gray-700"},yo={key:2,class:"absolute bottom-1.5 left-1.5 flex gap-1.5 z-10 cursor-pointer"},bo={class:"bg-black/90 rounded backdrop-blur p-2 font-medium text-sm"},ko={key:3,class:"flex absolute bottom-1.5 right-1.5 z-10 cursor-pointer"},wo={class:"bg-black/90 rounded backdrop-blur p-2 font-medium text-sm opacity-60 flex items-center justify-center"},xo={class:"text-white"},_o={class:"relative m-1 h-5 w-5"},To={class:"w-full"},Co={class:"flex gap-4"},So={class:"w-1/6"},Mo={class:"w-full h-80"},Eo={class:"w-full h-full border border-zinc-700 rounded-md p-4"},Po={class:"w-5/6"},Vo={class:"border border-zinc-700 flex relative rounded-md w-full h-80"},Ro={key:1,class:"absolute flex h-full w-full hover:bg-gray-800 text-gray-800 hover:text-gray-700"},Do=["muted"],Bo={key:2,class:"m-1.5 absolute opacity-60 p-2 rounded bg-black"},Ao={class:"text-sm inline"},$o=["checked"],Ho=["checked"],Lo=["checked"],jo={key:3,class:"absolute bottom-1.5 left-1.5 flex gap-1.5 z-10 cursor-pointer"},Fo={class:"bg-black/90 rounded backdrop-blur p-2 font-medium text-sm opacity-60"},Oo={key:0,class:"flex m-2 justify-center sm:mx-auto sm:justify-around bg-transparent pt-4 h-auto w-full sm:w-1/4 gap-4 md:gap-1"},Io={class:"hidden mx-auto text-sm"},No={class:"hidden mx-auto text-sm"},Xo={class:"hidden mx-auto text-sm"},Zo=Rt({__name:"LiveStream",setup(Uo){const Ae=Yt();Dt({meta:[{name:"description",content:"Experience live interactive video streams on FapTap. Connect with others, share your video, and control compatible sex toys remotely. Manage your stream, adjust quality, and interact in real-time."}],link:[{rel:"canonical",href:"https://faptap.net/live-stream"}]});
1const ee=Bt(),{autoblow:$,handy:H,bluetoothFleshyThrust:L,fleshyX3:pe}=At(ee);let te=Q(()=>$.value.connected),oe=Q(()=>H.value.connected),se=Q(()=>L.value.connected),ge=Q(()=>pe.value.connected);const $e=Q(()=>$.value.connected||H.value.connected||L.value.connected||pe.value.connected),j=i(!1),{isMobile:He}=$t();let r;const ye=Wt(),ae=i(!1),be=i("Copy");let F=i(!1),g=i(!1),ne=i(!1);const m=i(null),y=i(null);let u=new MediaStream,le=i(!1),O=i("info"),ie=i(""),I=i(""),Y=i("bg-red-900"),re=i(""),B=i(void 0);const Le=i([]);let ot=1e3;new Date().getTime();let W=i("Unknown");const N=i({});let ke=null,q=i(!1),P=i(!1);function je(){$e.value?(I.value="Sex toy connected successfully.",Y.value="bg-green-600",setTimeout(()=>{I.value="",Y.value="bg-transparent"},2e3)):(I.value="Connect your sex toy to get started.",Y.value="bg-red-900")}function st(){w.value&&(w.value=!w.value,X({type:"transfercontrol",username:b.value,data:!w.value}))}let we=-47,Fe=0,xe=!0;const Oe=t=>{Fe=t,performance.now(),xe=!0,at()};function at(){function t(o,n,l){return o+(n-o)*l}function e(o,n,l){if(l<=o)return 0;if(l>=n)return 1;const c=(l-o)/(n-o);return c*c*(3-2*c)}if(xe){const o=performance.now();let n=Math.min(o,1);const l=e(0,1,n);we=t(we,Fe,l),ze.value=we,n>=1&&(xe=!1)}}async function Ie(t,e){console.warn("syncDevice",t,e);const o=[];ee.devices.forEach(n=>{switch(n.connector){case x.Handy:oe.value&&o.push(Promise.resolve(H.value.XPVP(e,t)));break;case x.Autoblow:te.value&&o.push(Promise.resolve($.value.goto(e,t)));break;case x.BluetoothFleshyThrust:se.value&&o.push(Promise.resolve(L.value.move(e,t)));break;case x.FleshyX3:ge.value&&o.push(Promise.resolve(pe.value.move(e,t)));break}}),await Promise.all(o)}const G=String(window.btoa(String(Math.random())));let b=i(ye.params.streamToken?ye.params.streamToken:"");const h=!ye.params.streamToken;re.value=`${window.location.href}/${G}`.replace("live-stream//","live-stream/");const k=new WebSocket("/api/ws?username="+G);let w=i(h);k.onmessage=t=>{const e=JSON.parse(t.data);e.type==="offer"?(b.value=e.username,lt(e.offer)):e.type==="answer"?it(e.answer):e.type==="candidate"?rt(e.candidate):e.type==="bye"?(de(),e.ishost&&qe()):e.type==="position"?(W.value=e.data,Oe(e.pos),w.value&&Ie(e.intime,e.pos)):e.type==="transfercontrol"?w.value=!w.value:e.type==="notfound"&&(A("info","The recipient has disconnected."),h&&de())},k.addEventListener("close",function(t){F.value=!1,de(),le.value=!1,Ee(),clearInterval(B.value),B.value=void 0,g.value=!1,St(),A("danger","Socket connection closed")}),k.addEventListener("error",function(t){A("danger","Socket error")});let Ne;const Xe=()=>{clearTimeout(Ne),k.readyState>0?nt():Ne=setTimeout(Xe,1e3)};k.addEventListener("open",()=>{k.readyState===WebSocket.OPEN&&(console.log("inside - ws open"),F.value=!0,B.value=setInterval(()=>{k.send(JSON.stringify({type:"isConnected"}))},1e4))});const X=t=>{k.readyState===WebSocket.OPEN&&b.value?(t.recipient=b.value,t.ishost=h,k.send(JSON.stringify(t))):(k.readyState===WebSocket.CLOSED||k.readyState===WebSocket.CLOSING)&&A("danger","WebSocket is not open")};function Ue(){console.log("inside - createPeerConnection");const t={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.services.mozilla.com"}]};r=new RTCPeerConnection(t);try{u instanceof MediaStream&&(console.log("inside - peerConnection.addTrack"),u.getTracks().forEach(o=>{r.addTrack(o,u)}))}catch(o){console.error("Error (createPeerConnection):",o)}let e=new MediaStream;r.ontrack=o=>{console.log("inside - peerConnection.ontrack",o.track.kind),e||(e=new MediaStream),e.getTracks().some(n=>n.id===o.track.id)||e.addTrack(o.track),setTimeout(()=>{y.value?(y.value.srcObject=null,y.value.srcObject=e,y.value.play().then(()=>{}).catch(n=>{console.warn("Autoplay blocked, waiting for user interaction.")})):console.warn("Remote video element not ready.")},500)},r.onicecandidate=o=>{console.log("inside - peerConnection.onicecandidate"),o.candidate&&X({type:"candidate",candidate:o.candidate})},r.oniceconnectionstatechange=()=>{console.log("inside - peerConnection.oniceconnectionstatechange",r.iceConnectionState),r.iceConnectionState==="failed"&&(console.log("ICE failed, retrying..."),r.restartIce())}}function nt(){console.log("inside - function createOffer"),g.value=!1,Ue();const t={offerToReceiveVideo:!0,offerToReceiveAudio:!0};r.createOffer(t).then(e=>(console.log("inside - peerConnection.createOffer"),r.setLocalDescription(e))).then(()=>{X({type:"offer",offer:r.localDescription,username:G})}).catch(e=>console.error("Error creating an offer:",e))}function lt(t){console.log("inside - function handleOffer"),w.value=!1,g.value=!0,Ue(),r.setRemoteDescription(new RTCSessionDescription(t)).then(()=>r.createAnswer()).then(e=>(console.log("inside - peerConnection.setRemoteDescription"),r.setLocalDescription(e))).then(()=>{X({type:"answer",answer:r.localDescription})}).catch(e=>console.error("Error handling offer:",e)).finally(()=>{Me()})}function it(t){console.log("inside - handleAnswer"),w.value=!0,g.value=!0,Me(),r.setRemoteDescription(new RTCSessionDescription(t)).catch(e=>console.error("Error setting remote description:",e))}function rt(t){console.log("inside - handleCandidate"),r.addIceCandidate(new RTCIceCandidate(t)).catch(e=>console.error("Error adding ICE candidate:",e))}let _e=0,Te=null,Ce=0,Se=null,V=i(3e5),ct=i(3e5),R=i("144"),ce,ze=i(50);function Ye(){if(u){let t=u.getAudioTracks()[0];console.log("Audio:",m.value,t),t&&(P.value=!P.value,t.enabled=P.value)}}function dt(){if(u){let t=u.getVideoTracks()[0];console.log("Video:",m.value,t),t.enabled?t.enabled=!1:t.enabled=!0,q.value=!q.value}}function Me(t=3e5){const e=r.getSenders().find(o=>o.track.kind==="video");if(e){const o=e.getParameters();o.encodings||(o.encodings=[{}]),o.encodings[0].maxBitrate=Number(t),e.setParameters(o).then(()=>{console.log("Bitrate set to:",R.value)}
1).catch(n=>{console.log("Failed to set bitrate:",n)})}}async function ut(){ce=setInterval(async()=>{r&&(await r.getStats()).forEach(e=>{if(e.type==="outbound-rtp"&&e.kind==="video"){const o=e.bytesSent,n=e.timestamp;if(_e!==0&&Te){const l=o-_e,c=(n-Te)/1e3;V.value=l*8/1e3/c}_e=o,Te=n}if(e.type==="inbound-rtp"&&e.kind==="video"){const o=e.bytesReceived,n=e.timestamp;if(Ce!==0&&Se){const l=o-Ce,c=(n-Se)/1e3,d=l*8/1e3/c;ct.value=d}Ce=o,Se=n}})},1e3)}function Ee(){ce&&(clearTimeout(ce),ce=void 0)}function ft(){switch(String(V.value)){case"300000":R.value="144";break;case"600000":R.value="240";break;case"1000000":R.value="360";break;case"2000000":R.value="480";break;case"5000000":R.value="720";break;default:R.value="144";break}}function vt(t){V.value=t.target.value,ft(),Me(t.target.value)}const A=(t,e)=>{t=="success"?O.value="bg-green-600 text-white":t=="warning"?O.value="bg-gray-600 text-white":t=="danger"?O.value="bg-red-900 text-white":O.value="bg-blue-900 text-white",ie.value=e},We={webSocketErr:()=>{ie.value="",O.value="border text-black"},deviceError:()=>{I.value="",Y.value="border text-black"}},qe=()=>{de(),le.value=!1,Ee(),clearInterval(B.value),B.value=void 0,k.close(),u==null||u.getTracks().forEach(t=>t.stop()),h?Ae.go(0):Ae.push("/")},Ge=()=>{X({type:"bye",username:G,recipient:b.value,ishost:h}),qe()},de=()=>{y.value&&y.value.srcObject.getTracks().forEach(t=>t.stop()),b.value="",r&&r.close(),g.value=!1},mt=()=>{re.value==""&&A("warning","Something error to generate link. Please try again."),navigator.clipboard.writeText(re.value).then(()=>{be.value="Copied"}).catch(t=>{A("danger","Clipboard permission issue, please check and try again.")}).finally(()=>{setTimeout(()=>{be.value="Copy",ae.value=!1},1e3)})};async function ht(){const t=["webgl","wasm","cpu"];let e=!1;for(const d of t)try{await Gt(d),await Jt(),console.log(`TensorFlow.js backend set to: ${Qt()}`),e=!0;break}catch(v){console.warn(`Failed to set backend "${d}":`,v)}if(!e)return console.error("Failed to initialize any TensorFlow.js backend."),null;const o=5,n=2e3,l=Kt.MediaPipeHands,c={runtime:"tfjs",modelType:"lite"};for(let d=1;d<=o;d++)try{const v=await Zt(l,c);return console.log("Hand pose model loaded successfully."),v}catch(v){console.warn(`Attempt ${d} to load model failed:`,v),d<o?await new Promise(E=>setTimeout(E,n)):console.error("Max retries reached. Failed to load hand pose model.")}return null}let Je=0,Qe=0,Ke=0;const Pe=[],ue={x:0,y:0},Ze=t=>{if(Pe.length>=5){const e=Pe.shift();(e==="x"||e==="y")&&ue[e]--}Pe.push(t),(t==="x"||t==="y")&&ue[t]++},pt=()=>ue.x>ue.y?"x":"y",gt=(t,e,o)=>{console.log("[PrepareMove] intime:",t,"action:",e),w.value&&Ie(t,e),o=o==="Left"?"Right":"Left",W.value=`Position:${e} inTime:${t} (${o}0)`,Oe(e),X({type:"position",username:b.value,data:W.value,intime:t,pos:e})};let et=0;const yt=(t,e,o)=>{const n=new Date().getTime(),l=n-Ke;if(l>200){const c=pt()==="x"?e:t;if(Math.abs(et-c)<3)return;gt(Math.trunc(l),Math.trunc(c),o);const d=Math.abs(t-Qe),v=Math.abs(e-Je);d>v?(Ze("y"),Qe=t):(Ze("x"),Je=e),et=c,Ke=n}};function bt(t,e,o){if(o.clearRect(0,0,o.canvas.width,o.canvas.height),!o)return;const n=m.value.videoWidth,l=m.value.videoHeight,c=Math.max(0,Math.min(100,100-e[9].y/l*100)),d=Math.max(0,Math.min(100,100-e[9].x/n*100));if(yt(c,d,t),m.value&&j.value){const U=(N.value.width-n*.3)/2,De=(N.value.height-l*.3)/2;e.forEach(J=>{const me=J.x*.3+U,Be=J.y*.3+De;o.fillStyle="red",o.beginPath(),o.arc(me,Be,3,0,2*Math.PI),o.fill()}),[[0,1],[1,2],[2,3],[3,4],[0,5],[5,6],[6,7],[7,8],[5,9],[9,10],[10,11],[11,12],[9,13],[13,14],[14,15],[15,16],[13,17],[17,18],[18,19],[19,20],[0,17]].forEach(([J,me])=>{const Be=e[J].x*.3+U,Et=e[J].y*.3+De,Pt=e[me].x*.3+U,Vt=e[me].y*.3+De;o.strokeStyle="blue",o.lineWidth=1,o.beginPath(),o.moveTo(Be,Et),o.lineTo(Pt,Vt),o.stroke()})}}function kt(){console.log(`Report-length : ${Le.value.length}, Report-capacity ${ot}`),Le.value.map(t=>console.log(JSON.parse(t)))}let Ve={},fe="",Re=null;function wt(t,e){const o=t.map(l=>[l.x,l.y]);let n=0;if(Ve[e]){const l=Ve[e],c=o.map((d,v)=>{const E=d[0]-l[v][0],U=d[1]-l[v][1];return Math.sqrt(E*E+U*U)});n=c.reduce((d,v)=>d+v,0)/c.length}return Ve[e]=o,n}async function xt(t,e){if(!t)return[];const o=eo(e);try{return await t.estimateHands(o)}finally{o.dispose()}}async function _t(){const t=await ht();async function e(){let o=null,n=0;if(m.value){const l=await xt(t,m.value);l.length>0?(l.forEach((c,d)=>{const v=wt(c.keypoints,d);if(v>n)if(n=v,o=c,fe&&o.handedness!==fe){const E=o;setTimeout(()=>{o===E?(fe=E.handedness,Re=E):o=Re},300)}else fe=o.handedness,Re=o}),o&&bt(o.handedness,o.keypoints,ke)):ke.clearRect(0,0,N.value.width,N.value.height),requestAnimationFrame(e)}}e()}
1function Tt(){u.getTracks().forEach(e=>{e.addEventListener("ended",()=>{console.log(`Track ended: ${e.kind}`),t(e)})});function t(e){console.log(e.kind),e.kind==="audio"?console.log("Audio track has ended. Updating UI..."):e.kind==="video"&&console.log("Video track has ended. Updating UI...");const o=u.getVideoTracks().length,n=u.getAudioTracks().length;o===0&&console.log("No video tracks available."),n===0&&console.log("No audio tracks available.")}}function ve(){const t=new Date,e=t.getHours(),o=t.getMinutes(),n=t.getSeconds();return e*3600+o*60+n}function Ct(){ee.devices.forEach(t=>{switch(t.connector){case x.Handy:oe.value&&H.value.start_R(ve());break;case x.Autoblow:te.value&&$.value.start_R(ve());break;case x.BluetoothFleshyThrust:se.value&&L.value.resetPosition();break;case x.FleshyX3:ge.value&&console.log("Start");break}})}function St(){ee.devices.forEach(t=>{switch(t.connector){case x.Handy:oe.value&&H.value.stop_R();break;case x.Autoblow:te.value&&$.value.stop_R();break;case x.BluetoothFleshyThrust:se.value&&L.value.resetPosition();break;case x.FleshyX3:ge.value&&console.log("Stop");break}})}Ht(()=>{console.log("inside - onMounted"),ke=N.value.getContext("2d"),navigator.mediaDevices.getUserMedia({video:!0,audio:!0}).then(t=>{console.log("inside - navigator.mediaDevices");let e=u.getAudioTracks()[0];console.log("Audio:",m.value,e),e&&(e.enabled=!1,P.value=!0),m.value&&(m.value.srcObject=t,u=t,ne.value=!0),Tt()}).catch(t=>{console.log("Error Media Device: ",t),A("warning",t.name==="NotAllowedError"?"User denied access to media devices.":`Error ${t.name} accessing media devices`),ne.value=!1}).finally(()=>{console.log("isHost",h?"true":"false"),Xe(),h&&_t()}),m.value&&m.value.addEventListener("play",()=>{console.log("inside - localVideo play"),Ye(),le.value=!0,ut()}),y.value&&y.value.addEventListener("play",()=>{console.log("inside - remoteVideo play"),g.value=!0}),je(),Ct()}),Lt(()=>{Ge(),Ee(),window.location.pathname.includes("live-stream")||(clearInterval(B.value),B.value=void 0,u==null||u.getTracks().forEach(t=>t.stop()))}),he($e,(t,e)=>{je()}),he(te,(t,e)=>{t===!0&&$.value.start_R(ve())}),he(oe,(t,e)=>{t===!0&&H.value.start_R(ve())}),he(se,(t,e)=>{t===!0&&L.value.resetPosition()});const Mt=()=>{const t=y.value.srcObject;if(t instanceof MediaStream){const o=t.getTracks();console.log("Remote0====================All tracks:",o)}const e=m.value.srcObject;if(e instanceof MediaStream){const o=e.getTracks();console.log("Local====================All tracks:",o)}};return(t,e)=>{var o,n;return f(),C(zt,null,[a(ie)!=""?(f(),C("div",{key:0,class:K(`${a(O)} flex justify-between rounded-md text-md m-4 `)},[s("div",to,p(a(ie)),1),s("div",oo,[_(T,{name:"close",class:"h-6 w-6 mr-4 my-auto pointer",onClick:We.webSocketErr},null,8,["onClick"])])],2)):S("",!0),a(I)!=""?(f(),C("div",{key:1,class:K(`${a(Y)} flex justify-between mb-12 rounded-md text-md m-4 `)},[s("div",so,p(a(I)),1),s("div",ao,[_(T,{name:"close",class:"h-6 w-6 mr-4 my-auto pointer",onClick:We.deviceError},null,8,["onClick"])])],2)):S("",!0),s("div",no,[s("div",lo,[s("h1",io,[e[4]||(e[4]=M(" Live Stream ",-1)),s("span",ro,[!a(b)&&a(F)?(f(),D(T,{key:0,name:"onlineBadges",class:"text-blue-500 h-5 w-5"})):a(b)&&a(g)==!0?(f(),D(T,{key:1,name:"onlineBadges",class:"text-green-400 h-5 w-5"})):(f(),D(T,{key:2,name:"onlineBadges",class:"text-red-800 h-5 w-5"}))])]),s("div",co,[_(Z,{class:"hidden",onClick:kt},{default:z(()=>[...e[5]||(e[5]=[M("Report",-1)])]),_:1}),h==!0&&a(F)&&a(ne)?(f(),D(Z,{key:0,onClick:e[0]||(e[0]=l=>ae.value=!0),ref:"shareLinkShow"},{default:z(()=>[...e[6]||(e[6]=[M("Share",-1)])]),_:1},512)):h?(f(),D(Z,{key:1,disabled:"",class:"border"},{default:z(()=>[...e[7]||(e[7]=[M("Share",-1)])]),_:1})):S("",!0)])])]),(f(),D(jt(a(He)?Ft:Ot),{modelValue:ae.value,"onUpdate:modelValue":e[1]||(e[1]=l=>ae.value=l),target:(o=t.$refs.shareLinkShow)==null?void 0:o.$el,placement:"left-start",offset:10},{default:z(()=>[s("div",{class:K(`${a(He)?"-mt-10 pt-2":"p-4"}`)},[e[8]||(e[8]=s("div",{class:"flex gap-3 items-center"},[s("p",{class:"text-lg font-medium"},"Invite for video stream")],-1)),e[9]||(e[9]=s("hr",{class:"-mx-4 my-4 border-zinc-800"},null,-1)),s("div",null,[s("div",uo,[s("input",{class:"w-full bg-transparent border rounded-md p-1.5",value:`${a(re)}`,readonly:""},null,8,fo),_(Z,{onClick:mt,class:"w-20",theme:"blue",name:"Copy"},{default:z(()=>[M(p(be.value),1)]),_:1})])])],2)]),_:1},8,["modelValue","target"])),s("div",vo,[s("div",mo,[s("div",ho,[e[12]||(e[12]=s("h1",null,"Stream Video",-1)),s("div",po,[y.value&&a(b)&&!a(g)&&a(F)?(f(),D(tt,{key:0})):y.value&&a(g)?S("",!0):(f(),C("div",go,[_(T,{name:"video-box",class:"w-20 h-20 flex-1 my-auto"})])),s("video",{ref_key:"remoteVideo",ref:y,autoplay:"",playsinline:"",class:"flex-1 w-auto h-80 video-element"}," Your browser does not support the video tag. ",512),h?S("",!0):(f(),C("div",yo,[s("div",bo," >
1 UP: "+p(a(W)),1)])),a(b)&&a(g)==!0?(f(),C("div",ko,[s("div",wo,[e[11]||(e[11]=s("span",{class:"mr-2 text-white"},"Quality:",-1)),s("span",xo,p(a(R)),1),s("div",_o,[It(s("select",{onChange:vt,"onUpdate:modelValue":e[2]||(e[2]=l=>Xt(V)?V.value=l:V=l),ref_key:"currentBitrate",ref:V,class:"h-full w-full text-white bg-slate-700 border border-gray-300 rounded-md py-1 px-2"},[...e[10]||(e[10]=[Ut('<option selected value="300000">144p</option><option value="600000">240p</option><option value="1000000">360p</option><option value="2000000">480p</option><option value="5000000">720p</option>',5)])],544),[[Nt,a(V)]])])])])):S("",!0)]),s("small",null,p(a(b)),1)]),s("div",To,[s("div",Co,[s("div",So,[s("div",Mo,[s("h2",null,[_(Z,{onClick:e[3]||(e[3]=l=>j.value=!j.value),theme:`${j.value?"blue":"transparent"}`,class:"!px-1 !py-0 !my-1 mx-auto !text-xs"},{default:z(()=>[...e[13]||(e[13]=[M(" Debug",-1)])]),_:1},8,["theme"])]),s("div",Eo,[_(qt,{ballPosition:a(ze)},null,8,["ballPosition"])])])]),s("div",Po,[e[18]||(e[18]=s("h1",null,"My Video ",-1)),s("div",Vo,[!a(le)&&h?(f(),D(tt,{key:0})):(n=m.value)!=null&&n.srcObject?S("",!0):(f(),C("div",Ro,[_(T,{name:"video-box",class:"w-20 h-20 flex-1 my-auto"})])),s("video",{ref_key:"localVideo",ref:m,muted:a(P),autoplay:"",playsinline:"",class:"flex-1 h-full w-full localVideo"}," Your browser does not support the video tag. ",8,Do),s("canvas",{ref_key:"canvas",ref:N,class:K(`localVideo absolute h-full w-full ${j.value&&h?"":"hidden"}`)},null,2),j.value?(f(),C("div",Bo,[s("ul",Ao,[s("li",null,[e[14]||(e[14]=M("isHost: ",-1)),s("input",{type:"checkbox",checked:h})]),s("li",null,[e[15]||(e[15]=M("SocketConn:",-1)),s("input",{type:"checkbox",checked:a(F)},null,8,$o)]),s("li",null,[e[16]||(e[16]=M("StreamPermit: ",-1)),s("input",{type:"checkbox",checked:a(ne)},null,8,Ho)]),s("li",null,[e[17]||(e[17]=M("CallAccepted: ",-1)),s("input",{type:"checkbox",checked:a(g)},null,8,Lo)]),s("li",null,"my Audio: "+p(a(P)),1),s("li",null,"my Video: "+p(a(q)),1)])])):S("",!0),h?(f(),C("div",jo,[s("div",Fo," < UP: "+p(a(W)),1)])):S("",!0)]),s("small",null,p(a(G)),1)])])])]),a(g)?(f(),
1C("div",Oo,[s("div",{class:K(["border border-slate-400 bg-gray-200 hover:bg-gray-300 h-12 w-12 rounded-full text-center flex flex-col items-center justify-center transition-colors duration-200 shadow-md",a(w)?"":"opacity-40"]),onClick:st},[_(T,{name:"swap-horizontal",class:"h-6 w-6 text-slate-600 mb-1"}),s("p",Io,p(a(w)?"TC":""),1)],2),s("div",{class:"border border-slate-400 bg-gray-200 hover:bg-gray-300 h-12 w-12 rounded-full text-center flex flex-col items-center justify-center transition-colors duration-200 shadow-md",onClick:dt},[_(T,{name:a(q)?"video-enable":"video-disable",class:"h-6 w-6 text-slate-600 mb-1"},null,8,["name"]),s("p",No,p(a(q)?"Resume":"Stop"),1)]),s("div",{class:"border border-slate-400 bg-gray-200 hover:bg-gray-300 h-12 w-12 rounded-full text-center flex flex-col items-center justify-center transition-colors duration-200 shadow-md",onClick:Ye},[_(T,{name:a(P)?"mute":"unmute",theme:"green",class:"h-6 w-6 text-slate-600 mb-1"},null,8,["name"]),s("p",Xo,p(a(P)?"Unmute":"Mute"),1)]),s("div",{class:"border border-slate-400 bg-gray-200 hover:bg-gray-300 h-12 w-12 rounded-full text-center flex flex-col items-center justify-center transition-colors duration-200 shadow-md",onClick:Ge},[_(T,{name:"endcall",theme:"red",class:"h-6 w-6 text-slate-600 mb-1"}),e[19]||(e[19]=s("p",{class:"hidden mx-auto text-sm"},"End",-1))]),s("div",{class:"border border-slate-400 bg-gray-200 hover:bg-gray-300 h-12 w-12 rounded-full text-center flex flex-col items-center justify-center transition-colors duration-200 shadow-md",onClick:Mt},[...e[20]||(e[20]=[s("p",{class:""},"Debug",-1)])])])):S("",!0)])],64)}}});export{Zo as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.