import{B as e,E as t,H as n,I as r,J as i,K as a,P as o,T as s,W as c,Z as l,a as u,b as d,c as f,g as p,i as m,j as h,n as g,p as _,r as v,t as y,w as b}from"./ui-CBKBDzcl.js";import{t as x}from"./arrow-right-Co3jJM9l.js";import{t as S}from"./globe-BYt6yQt4.js";import{n as C,r as w,t as ee}from"./users-DJn4rrjp.js";import{t as T}from"./radio-tower-DcOqbcos.js";import{a as E,n as te}from"./index-Cfr72k3j.js";var D=[[`path`,{d:`M11 20H2`,key:`nlcfvz`}],[`path`,{d:`M11 4.562v16.157a1 1 0 0 0 1.242.97L19 20V5.562a2 2 0 0 0-1.515-1.94l-4-1A2 2 0 0 0 11 4.561z`,key:`au4z13`}],[`path`,{d:`M11 4H8a2 2 0 0 0-2 2v14`,key:`74r1mk`}],[`path`,{d:`M14 12h.01`,key:`1jfl7z`}],[`path`,{d:`M22 20h-3`,key:`vhrsz`}]],ne=t=>e(d,i(t,{iconNode:D,name:`door-open`})),O=[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]],re=t=>e(d,i(t,{iconNode:O,name:`search`})),k=h(`
rooms / registry
房间 创建或进入房间。已接入新分页查询(/api/rooms/query)与管理面创建(/api/manage/rooms),支持搜索、公开度与成员统计。`),A=h(` `),j=h(` `),M=h(` 高级`),N=h(``),ie=h(`
loading…`),ae=h(`房间列表`),oe=h(``),se=h(`
`),ce=h(`暂无房间
`),le=h(`/`),ue=h(`· `),de=h(``),P=()=>{let i=E(),[d,h]=a([]),[b,D]=a(0),[O,P]=a(1),[F,I]=a(``),[L,R]=a(``),[z,B]=a(``),[V,H]=a(!1),[U,W]=a(``),[fe,G]=a(!1),[K,q]=a(``),[J,pe]=a(!0),[Y,me]=a(!1),X=async()=>{G(!0),W(``);try{if(_.isAdminOrAbove())try{let e=((await p.manageRooms()).rooms||[]).map(e=>({name:e.room.name,display_name:e.room.display_name,description:e.room.description,creator:e.room.creator,is_public:e.room.is_public,status:e.room.status,member_count:e.member_count,targets:e.targets,live:e.live,created_at:e.room.created_at})),t=F().trim().toLowerCase();t&&(e=e.filter(e=>e.name.toLowerCase().includes(t)||e.display_name&&e.display_name.toLowerCase().includes(t))),D(e.length);let n=(O()-1)*12;h(e.slice(n,n+12));return}catch{}try{let e=await p.queryRooms({page:O(),page_size:12,search:F().trim()||void 0}),t=(e.rooms||[]).map(e=>({name:e.name,display_name:e.display_name,description:e.description,creator:e.creator,is_public:e.is_public,status:e.status,member_count:e.member_count??0,targets:[],live:!1,created_at:e.created_at}));try{let e=await p.listRooms(),n=new Map((e.rooms||[]).map(e=>[e.name,(e.targets?.length??0)>0?e.targets:[]]));for(let e of t){let t=n.get(e.name);t&&(e.targets=t,e.live=t.length>0)}}catch{}h(t),D(e.total??t.length);return}catch{}let e=((await p.listRooms()).rooms||[]).map(e=>({name:e.name,display_name:e.name,description:``,creator:``,is_public:!0,status:`active`,member_count:0,targets:e.targets||[],live:(e.targets?.length??0)>0})),t=F().trim().toLowerCase();t&&(e=e.filter(e=>e.name.toLowerCase().includes(t))),D(e.length);let n=(O()-1)*12;h(e.slice(n,n+12))}catch(e){W(String(e?.message||e))}finally{G(!1)}};n(()=>{_.isAuthed()&&X()}),n(()=>{O(),F(),_.isAuthed()&&X()}),l(()=>_.isAuthed()&&X());let Z=()=>{I(L().trim()),P(1)},Q=async()=>{let e=z().trim();if(e){H(!0),W(``);try{if(_.isAdminOrAbove()&&Y())await p.manageCreateRoom({name:e,display_name:e,description:K().trim()||void 0,is_public:J(),require_approval:!1,max_members:100});else try{await p.manageCreateRoom({name:e,display_name:e,description:K().trim()||void 0,is_public:J()})}catch{await p.createRoom(e)}B(``),q(``),await X(),i({to:`/room`,search:{room:e}})}catch(e){W(String(e?.message||e))}finally{H(!1)}}},he=e=>i({to:`/room`,search:{room:e}}),$=()=>Math.max(1,Math.ceil(b()/12));return(()=>{var n=se(),i=n.firstChild,a=i.firstChild,l=a.firstChild,p=l.firstChild,h=a.nextSibling,E=h.firstChild,D=E.firstChild,H=D.nextSibling,W=H.nextSibling.nextSibling;W.nextSibling;var G=i.nextSibling;return s(n,e(f,{get children(){return k()}}),i),s(n,e(r,{get when(){return U()},get children(){return e(y,{tone:`error`,get children(){return U()}})}}),i),s(n,e(f,{delay:1,get children(){var n=N(),i=n.firstChild,a=i.firstChild,o=a.firstChild,l=o.firstChild;return s(n,e(m,{}),i),s(o,e(C,{class:`size-4 shrink-0 text-muted-foreground`}),l),l.$$keydown=e=>{e.key===`Enter`&&Q()},l.$$input=e=>B(e.currentTarget.value),s(a,e(v,{class:`h-10 shrink-0`,onClick:Q,get disabled(){return V()||!z().trim()},get children(){return[e(x,{class:`size-4`}),`创建并进入`]}}),null),s(i,e(r,{get when(){return _.isAdminOrAbove()},get children(){var n=M(),i=n.firstChild.firstChild;return i.addEventListener(`change`,e=>me(e.target.checked)),s(n,e(r,{get when(){return Y()},get children(){return[(()=>{var e=A();return e.$$input=e=>q(e.currentTarget.value),c(()=>e.value=K()),e})(),(()=>{var n=j(),r=n.firstChild;return r.addEventListener(`change`,e=>pe(e.target.checked)),s(n,(()=>{var n=t(()=>!!J());return()=>n()?e(S,{class:`size-3`}):e(w,{class:`size-3`})})(),null),s(n,()=>J()?`公开`:`私密`,null),c(()=>r.checked=J()),n})()]}}),null),c(()=>i.checked=Y()),n}}),null),c(()=>l.value=z()),n}}),i),s(l,e(re,{class:`size-4 text-muted-foreground`}),p),p.$$keydown=e=>{e.key===`Enter`&&Z()},p.$$input=e=>R(e.currentTarget.value),s(a,e(v,{variant:`outline`,class:`h-9`,onClick:Z,children:`搜索`}),null),s(a,e(r,{get when(){return F()},get children(){return e(v,{variant:`ghost`,class:`h-9`,onClick:()=>{R(``),I(``),P(1)},children:`清除`})}}),null),s(E,b,D),s(E,O,H),s(E,$,W),s(h,e(v,{variant:`outline`,class:`h-7 px-2 text-xs`,get disabled(){return O()<=1},onClick:()=>P(e=>Math.max(1,e-1)),children:`上一页`}),null),s(h,e(v,{variant:`outline`,class:`h-7 px-2 text-xs`,get disabled(){return O()>=$()},onClick:()=>P(e=>e+1),children:`下一页`}),null),s(G,e(f,{get children(){var t=ae(),n=t.firstChild,i=n.firstChild;return s(n,e(T,{class:`size-4 text-muted-foreground`}),i),s(t,e(r,{get when(){return fe()},get children(){return ie()}}),null),t}}),null),s(G,e(r,{get when(){return d().length>0},get fallback(){return(()=>{var n=ce(),r=n.firstChild,i=r.nextSibling.firstChild.nextSibling;return s(r,e(ne,{class:`size-5`})),s(i,(()=>{var e=t(()=>!!F());return()=>e()?`无匹配 "${F()}" 的房间`:`创建一个房间后,分发拓扑会在这里出现。`})()),n})()},get children(){var n=oe();return s(n,e(o,{get each(){return d()},children:(n,i)=>e(f,{get delay(){return Math.min(i()+1,6)},get children(){var i=de(),a=i.firstChild,o=a.firstChild,c=o.firstChild,l=c.firstChild,d=l.firstChild,f=l.nextSibling,p=f.firstChild,h=p.nextSibling,_=h.firstChild,y=h.nextSibling,b=y.firstChild,C=o.nextSibling;return s(i,e(m,{}),a),s(o,e(u,{get active(){return!!n.live}}),c),s(d,()=>n.display_name||n.name),s(l,e(r,{get when(){return n.name!==n.display_name},get children(){var e=le();return e.firstChild,s(e,()=>n.name,null),e}}),null),s(l,e(g,{get variant(){return n.live?`success`:`muted`},class:`text-[10px]`,get children(){return n.live?`LIVE`:`IDLE`}}),null),s(l,e(g,{variant:`outline`,class:`gap-1 text-[10px]`,get children(){return[t(()=>t(()=>n.is_public===!1)()?e(w,{class:`size-3`}):e(S,{class:`size-3`})),t(()=>n.is_public===!1?`私密`:`公开`)]}}),null),s(l,e(r,{get when(){return t(()=>!!n.status)()&&n.status!==`active`},get children(){return e(g,{variant:`outline`,class:`border-destructive/40 text-destructive text-[10px]`,get children(){return n.status}})}}),null),s(p,e(te,{class:`size-3`}),null),s(p,()=>n.creator||`-`,null),s(h,e(ee,{class:`size-3`}),_),s(h,()=>n.member_count??0,_),s(y,()=>n.targets?.length??0,b),s(f,e(r,{get when(){return n.description},get children(){var e=ue();return e.firstChild,s(e,()=>n.description,null),e}}),null),s(C,e(v,{variant:`outline`,class:`h-9`,onClick:()=>he(n.name),get children(){return[`进入房间`,e(x,{class:`size-4`})]}})),i}})})),n}}),null),c(()=>p.value=L()),n})()};b([`input`,`keydown`]);export{P as Rooms};