import{E as e,F as t,L as n,U as r,V as i,b as a,h as o,j as s,k as c,r as l,v as u,w as d,y as f,z as p}from"./ui-W1Pm8dqI.js";var m=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z`,key:`1tzo1f`}]],h=e=>t(o,r(e,{iconNode:m,name:`file-play`})),g=[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]],_=e=>t(o,r(e,{iconNode:g,name:`link-2`})),v=[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]],y=e=>t(o,r(e,{iconNode:v,name:`message-square`})),b=[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]],x=e=>t(o,r(e,{iconNode:b,name:`send`})),S=e(`
`),C=e(``),w=e(`

还没有弹幕`),T=e(`

`),E=e(`
`),D=e(`主播`),O=e(`

`),k=e(`

登录后可在房间内发送弹幕`);function A(e){let[r,o]=i([]),s=0,l=0,u=``,f=[6,18,30,42,54,66,78];n(()=>{let t=e.messages(),n=t[t.length-1];if(!n||n.id===u)return;u=n.id;let r=f[l%f.length];l++;let i=7+Math.random()*4,a={key:++s,text:(n.host?`主播:`:``)+n.message,color:n.color||`#f1f5f9`,top:r,dur:i};o(e=>{let t=[...e,a];return t.length>50?t.slice(t.length-50):t})});let m=e=>o(t=>t.filter(t=>t.key!==e));return(()=>{var e=S();return a(e,t(c,{get each(){return r()},children:e=>(()=>{var t=C();return t.addEventListener(`animationend`,()=>m(e.key)),a(t,()=>e.text),p(n=>{var r=`${e.top}%`,i=e.color,a=`${e.dur}s`;return r!==n.e&&d(t,`top`,n.e=r),i!==n.t&&d(t,`color`,n.t=i),a!==n.a&&d(t,`animation-duration`,n.a=a),n},{e:void 0,t:void 0,a:void 0}),t})()})),e})()}function j(e){return Number.isFinite(e)?new Date(e).toLocaleTimeString(`zh-CN`,{hour:`2-digit`,minute:`2-digit`}):`--:--`}function M(e){return e===`admin`?`text-acid-magenta border-acid-magenta/30 bg-acid-magenta/10`:e===`publisher`?`text-warning border-warning/30 bg-warning/10`:`text-acid-cyan border-acid-cyan/30 bg-acid-cyan/10`}function N(e){let[n,r]=i(``),o=()=>{let t=n().trim();t&&(e.onSend(t),r(``))};return(()=>{var i=E(),d=i.firstChild;return a(d,t(s,{get when(){return e.messages().length>0},get children(){return t(c,{get each(){return e.messages()},children:e=>(()=>{var n=O(),r=n.firstChild,i=r.nextSibling.firstChild,o=i.firstChild,c=o.nextSibling,l=c.nextSibling,d=i.nextSibling;return a(r,()=>(e.user[0]??`?`).toUpperCase()),a(o,()=>e.user),a(c,()=>e.role),a(i,t(s,{get when(){return e.host},get children(){return D()}}),l),a(l,()=>j(e.ts)),a(d,()=>e.message),p(()=>u(r,`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full border text-[11px] font-bold ${M(String(e.role))}`)),n})()})}}),null),a(d,t(s,{get when(){return e.messages().length===0},get children(){var e=w(),n=e.firstChild;return a(e,t(y,{class:`size-5 text-muted-foreground/50`}),n),e}}),null),a(i,t(s,{get when(){return e.canChat},get fallback(){return k()},get children(){var e=T(),i=e.firstChild;return i.$$keydown=e=>{e.key===`Enter`&&o()},i.$$input=e=>r(e.currentTarget.value),a(e,t(l,{onClick:o,size:`icon`,"aria-label":`发送弹幕`,class:`shrink-0`,get children(){return t(x,{class:`size-4`})}}),null),p(()=>i.value=n()),e}}),null),i})()}f([`input`,`keydown`]);function P(e,t){let n=new EventSource(`/api/room/${encodeURIComponent(e)}/events`,{withCredentials:!0});return n.addEventListener(`room`,e=>{try{t(JSON.parse(e.data))}catch{}}),()=>n.close()}function F(e,t){let n=new EventSource(`/api/room/${encodeURIComponent(e)}/chat`,{withCredentials:!0});return n.addEventListener(`chat`,e=>{try{t(JSON.parse(e.data))}catch{}}),()=>n.close()}async function I(e,t,n){await fetch(`/api/room/${encodeURIComponent(e)}/broadcast`,{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:t,color:n})})}async function L(e,t,n){await fetch(`/api/room/${encodeURIComponent(e)}/chat`,{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:t,color:n})})}function R(e){return{urls:e.urls,username:e.username,credential:e.credential}}async function z(e){let t=new RTCPeerConnection({iceServers:e.iceServers||[]});e.local.getTracks().forEach(n=>t.addTrack(n,e.local));let n=await t.createOffer();await t.setLocalDescription(n);let r=await(await fetch(`/rtc/v1/whip/?app=live&stream=${encodeURIComponent(e.stream)}&token=${encodeURIComponent(e.token)}`,{method:`POST`,headers:{"Content-Type":`application/sdp`},credentials:`same-origin`,body:n.sdp??``})).text();return await t.setRemoteDescription({type:`answer`,sdp:r}),t}async function B(e){let t=new RTCPeerConnection({iceServers:e.iceServers||[]});t.addTransceiver(`video`,{direction:`recvonly`}),t.addTransceiver(`audio`,{direction:`recvonly`});let n=await t.createOffer();await t.setLocalDescription(n);let r=await(await fetch(`/rtc/v1/whep/?app=live&stream=${encodeURIComponent(e.stream)}`,{method:`POST`,headers:{"Content-Type":`application/sdp`},credentials:`same-origin`,body:n.sdp??``})).text();return await t.setRemoteDescription({type:`answer`,sdp:r}),t}async function V(e){let t=new RTCPeerConnection({iceServers:e.iceServers||[]});e.local.getTracks().forEach(n=>t.addTrack(n,e.local));let n=await t.createOffer();await t.setLocalDescription(n);let r=await(await fetch(`/api/cf/sessions/${e.sessionId}/tracks/new`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`same-origin`,body:JSON.stringify({sessionDescription:{type:`offer`,sdp:n.sdp},tracks:[{location:`local`}]})})).json();return await t.setRemoteDescription({type:r.sessionDescription.type,sdp:r.sessionDescription.sdp}),t}async function H(e){let t=new RTCPeerConnection({iceServers:e.iceServers||[]});t.addTransceiver(`video`,{direction:`recvonly`}),t.addTransceiver(`audio`,{direction:`recvonly`});let n=await t.createOffer();await t.setLocalDescription(n);let r=await(await fetch(`/api/cf/sessions/${e.viewerSessionId}/tracks/new`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`same-origin`,body:JSON.stringify({sessionDescription:{type:`offer`,sdp:n.sdp},tracks:[{location:`remote`,sessionId:e.publisherSessionId}]})})).json();return await t.setRemoteDescription({type:r.sessionDescription.type,sdp:r.sessionDescription.sdp}),t}export{z as a,F as c,A as d,y as f,B as i,P as l,h as m,H as n,I as o,_ as p,R as r,L as s,V as t,N as u};