UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

2 lines (1 loc) 5.91 kB
import{am as F,bi as G,aT as z,a9 as j,aM as H,ae as u,aa as i,a$ as a,b5 as e,aj as n,bB as c,u as v,ai as m,i as I,bE as T,aX as J,aB as S,C as K,b3 as A,aI as E,ab as p,E as R,ac as b,s as X,_ as q,G as Q,H as Y,J as Z,a1 as ee,t as te,K as se,aO as o}from"./index-BAS7XAoe.js";import{u as ae,d as M}from"./useBroadcast-BKGdfaqh.js";import{_ as le}from"./Textarea.vue_vue_type_script_setup_true_lang-DsmTjQmg.js";import{W as D,U as ne,e as oe,A as ie}from"./index-CsJj9qiO.js";const ce={class:"space-y-6"},de={class:"flex items-center justify-between"},re={class:"text-2xl font-bold"},ue={class:"flex items-center gap-2"},me={key:0,class:"py-12 text-center text-muted-foreground"},_e={key:1,class:"py-12 text-center text-muted-foreground"},fe={key:0,class:"flex items-center gap-2 text-sm text-muted-foreground"},ve={key:1,class:"flex cursor-pointer items-center gap-2 text-sm text-muted-foreground"},pe=["checked"],ge={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"},ye={class:"absolute right-3 top-3 z-10 flex cursor-pointer items-center"},he=["checked","onChange"],xe={class:"mb-3 flex items-start justify-between"},be={class:"flex items-center gap-3"},ke={class:"flex size-10 items-center justify-center rounded-lg bg-muted"},$e={class:"font-medium leading-tight"},we={class:"text-xs text-muted-foreground"},Ce={key:0,class:"mb-3 text-xs text-muted-foreground"},ze={key:1,class:"mb-3 text-xs text-muted-foreground"},Se={class:"flex justify-end border-t pt-3"},Ae={key:0},De={key:1},Ee=F({__name:"index",setup(Ve){const{t:s}=G(),_=z([]),g=z(!1),d=z(new Set),{dialogOpen:y,broadcastTitle:k,broadcastMsg:h,sending:V,openDialog:U,sendBroadcast:N}=ae(),x=j(()=>d.value.size),$=j(()=>_.value.length>0&&d.value.size===_.value.length);function O(r){const l=new Set(d.value);l.has(r)?l.delete(r):l.add(r),d.value=l}function W(){$.value?d.value=new Set:d.value=new Set(_.value.map(r=>r.id))}async function w(){var r;g.value=!0;try{const l=await M.list(),t=((r=l.data)==null?void 0:r.data)??l.data;t&&typeof t=="object"&&!Array.isArray(t)?_.value=Object.entries(t).flatMap(([C,P])=>P.map(f=>{var B;return{id:f.clientId,name:f.clientId,type:(B=f.userAgent)!=null&&B.includes("Electron")?"Electron":"Web",status:f.status,lastSeen:f.lastActivity,libraryId:C,...f}})):_.value=Array.isArray(t)?t:[],d.value=new Set}catch{A.error(s("common.failed"))}finally{g.value=!1}}async function L(r){try{await M.disconnect(r),A.success(s("common.success")),await w()}catch{A.error(s("common.failed"))}}return H(w),(r,l)=>(o(),u("div",ce,[i("div",de,[i("h1",re,a(e(s)("device.title")),1),i("div",ue,[n(e(v),{variant:"outline",onClick:e(U)},{default:c(()=>[n(e(ne),{class:"mr-2 size-4"}),m(" "+a(e(s)("device.broadcast")),1)]),_:1},8,["onClick"]),n(e(v),{variant:"outline",onClick:w},{default:c(()=>[n(e(D),{class:E(["mr-2 size-4",{"animate-spin":g.value}])},null,8,["class"]),m(" "+a(e(s)("common.refresh")),1)]),_:1})])]),g.value?(o(),u("div",me,[n(e(D),{class:"mx-auto mb-2 size-6 animate-spin"}),m(" "+a(e(s)("common.loading")),1)])):_.value.length?(o(),u(I,{key:2},[x.value>0?(o(),u("div",fe,a(e(s)("device.selectedDevices",{count:x.value})),1)):(o(),u("label",ve,[i("input",{type:"checkbox",checked:$.value,class:"size-4 rounded border-gray-300 accent-primary",onChange:l[0]||(l[0]=T(t=>W(),["prevent"]))},null,40,pe),m(" "+a(e(s)("device.allDevices")),1)])),i("div",ge,[(o(!0),u(I,null,J(_.value,t=>(o(),p(e(q),{key:t.id,class:E(["relative overflow-hidden transition-colors",d.value.has(t.id)?"ring-2 ring-primary":""])},{default:c(()=>[i("label",ye,[i("input",{type:"checkbox",checked:d.value.has(t.id),class:"size-4 rounded border-gray-300 text-primary accent-primary",onChange:T(C=>O(t.id),["prevent"])},null,40,he)]),n(e(X),{class:"p-5"},{default:c(()=>[i("div",xe,[i("div",be,[i("div",ke,[t.type==="Electron"?(o(),p(e(oe),{key:0,class:"size-5 text-foreground"})):(o(),p(e(ie),{key:1,class:"size-5 text-foreground"}))]),i("div",null,[i("div",$e,a(t.name),1),i("div",we,a(t.type),1)])]),n(e(R),{variant:t.status==="connected"?"default":"secondary"},{default:c(()=>[m(a(t.status==="connected"?e(s)("device.connected"):e(s)("device.disconnected")),1)]),_:2},1032,["variant"])]),t.libraryId?(o(),u("div",Ce," Library: "+a(t.libraryId),1)):b("",!0),t.lastSeen?(o(),u("div",ze,a(e(s)("device.lastSeen"))+": "+a(t.lastSeen),1)):b("",!0),i("div",Se,[t.status==="connected"?(o(),p(e(v),{key:0,variant:"ghost",size:"sm",onClick:C=>L(t.id)},{default:c(()=>[m(a(e(s)("device.disconnect")),1)]),_:2},1032,["onClick"])):b("",!0)])]),_:2},1024)]),_:2},1032,["class"]))),128))])],64)):(o(),u("div",_e,a(e(s)("common.noData")),1)),n(e(K),{open:e(y),"onUpdate:open":l[5]||(l[5]=t=>S(y)?y.value=t:null)},{default:c(()=>[n(e(Q),{class:"sm:max-w-md"},{default:c(()=>[n(e(Y),null,{default:c(()=>[n(e(Z),null,{default:c(()=>[m(a(e(s)("device.broadcastTitle")),1)]),_:1}),n(e(ee),null,{default:c(()=>[x.value>0?(o(),u("span",Ae,a(e(s)("device.broadcastTo"))+": "+a(e(s)("device.selectedDevices",{count:x.value})),1)):(o(),u("span",De,a(e(s)("device.broadcastTo"))+": "+a(e(s)("device.allDevices")),1))]),_:1})]),_:1}),n(e(te),{modelValue:e(k),"onUpdate:modelValue":l[1]||(l[1]=t=>S(k)?k.value=t:null),placeholder:e(s)("device.broadcastTitlePlaceholder")},null,8,["modelValue","placeholder"]),n(e(le),{modelValue:e(h),"onUpdate:modelValue":l[2]||(l[2]=t=>S(h)?h.value=t:null),placeholder:e(s)("device.broadcastPlaceholder"),rows:"4"},null,8,["modelValue","placeholder"]),n(e(se),null,{default:c(()=>[n(e(v),{variant:"outline",onClick:l[3]||(l[3]=t=>y.value=!1)},{default:c(()=>[m(a(e(s)("common.cancel")),1)]),_:1}),n(e(v),{disabled:e(V)||!e(h).trim(),onClick:l[4]||(l[4]=t=>e(N)($.value||d.value.size===0?void 0:[...d.value]))},{default:c(()=>[e(V)?(o(),p(e(D),{key:0,class:"mr-2 size-4 animate-spin"})):b("",!0),m(" "+a(e(s)("device.send")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])]))}});export{Ee as default};