Files
CoreInject/frontend/dist/assets/Birl3CuV.js
2025-11-16 05:39:11 +08:00

20 lines
4.1 KiB
JavaScript

import{d as e,r as a,c as l,w as s,Q as u,l as t,m as n,p as i,q as o,a as r,b as v,e as c,t as d,v as m,n as b,z as p,T as f,h as k,k as y}from"./CdD4XvnD.js"
import{b as g,_ as h,a as I}from"./BaSQ3xJt.js"
import{u as U}from"./4xYhABhf.js"
const w={key:0,class:"background-avatar-blur"},R=["src"],x={class:"card-content"},T={class:"content-layout"},L={class:"avatar-wrapper"},j={class:"user-info"},C={class:"user-name-row"},_={class:"user-name"},O={class:"user-username"},N={class:"action-buttons"},M=I(e({__name:"UserProfileCard",props:{visible:{type:Boolean,default:!1},userId:{default:""},userName:{default:""},username:{default:""},position:{default:void 0},avatarUrl:{default:void 0},avatarId:{default:void 0}},emits:["close","sendMessage","blockUser","mouseEnter"],setup(e,{emit:I}){const M=e,W=I,$=a(null),q=a(null),z=a(""),B=a(!1),{isUserOnline:E,queryUsersOnlineStatus:H}=U(),P=l(()=>M.userId?E(M.userId).value:null),Q=l(()=>B.value&&""!==z.value),S=a(!1)
let A=null
const D=l(()=>M.username||M.userId||"未知用户"),F=l(()=>S.value?"加载中...":!0===P.value?"在线":!1===P.value?"离线":"未知")
s(()=>P.value,e=>{S.value&&null!==e&&(S.value=!1,A&&(clearTimeout(A),A=null))}),s(()=>[M.visible,M.userId],async()=>{if(M.visible&&M.userId){if(S.value=!1,A&&(clearTimeout(A),A=null),null===P.value){S.value=!0
try{await H([M.userId]),A=window.setTimeout(()=>{P.value,S.value=!1,A=null},3e3)}catch(e){S.value=!1}}}else A&&(clearTimeout(A),A=null)},{immediate:!0})
const G=e=>{B.value=!0,z.value&&z.value.startsWith("blob:")&&URL.revokeObjectURL(z.value),z.value=URL.createObjectURL(e)}
s(()=>M.visible,e=>{e?B.value=!1:(B.value=!1,z.value&&z.value.startsWith("blob:")&&(URL.revokeObjectURL(z.value),z.value=""))})
const J=l(()=>M.position?q.value?{left:`${q.value.x}px`,top:`${q.value.y}px`}:{left:`${M.position.x}px`,top:`${M.position.y}px`}:{})
s(()=>[M.visible,M.position],()=>{q.value=null,M.visible&&M.position&&y(()=>{(()=>{if(!M.position||!$.value)return
const e=$.value.getBoundingClientRect(),a=e.width||260,l=e.height||240,s=16
let u=M.position.x,t=M.position.y
const n=window.innerWidth,i=window.innerHeight
u+a>n-s&&(u=n-a-s),u<s&&(u=s),t+l>i-s&&(t=M.position.y-s>=l?M.position.y-l-8:i-l-s),t<s&&(t=s),q.value={x:u,y:t}})()})},{immediate:!0})
const K=a(null),V=()=>{K.value&&(clearTimeout(K.value),K.value=null),W("close")},X=()=>{K.value&&(clearTimeout(K.value),K.value=null),W("mouseEnter")},Y=()=>{K.value=window.setTimeout(()=>{V()},300)},Z=()=>{W("sendMessage",M.userId,M.userName),V()},ee=()=>{W("blockUser",M.userId,M.userName),V()}
return u(()=>{z.value&&z.value.startsWith("blob:")&&URL.revokeObjectURL(z.value),A&&(clearTimeout(A),A=null)}),(a,l)=>(k(),t(f,{to:"body"},[n(i,{name:"card-fade"},{default:o(()=>[e.visible?(k(),r("div",{key:0,class:"card-overlay",onClick:V},[c("div",{ref_key:"cardContainerRef",ref:$,class:"card-container",style:m(J.value),onClick:l[0]||(l[0]=d(()=>{},["stop"])),onMouseenter:X,onMouseleave:Y},[c("div",{class:b(["avatar-background",{"has-avatar":Q.value}])},[Q.value?(k(),r("div",w,[z.value?(k(),r("img",{key:0,src:z.value,alt:"",class:"background-image"},null,8,R)):v("",!0)])):v("",!0),l[1]||(l[1]=c("div",{class:"background-overlay"},null,-1))],2),c("div",x,[c("div",T,[c("div",L,[n(g,{size:"large",userId:e.userId,"user-name":e.userName,"avatar-id":e.avatarId,width:80,height:80,"on-avatar-loaded":G},null,8,["userId","user-name","avatar-id"]),c("div",{class:b(["online-indicator",{online:P.value,offline:!1===P.value}])},null,2)]),c("div",j,[c("div",C,[c("div",_,p(e.userName),1),c("span",{class:b(["user-status",{online:P.value,offline:!1===P.value}])},[l[2]||(l[2]=c("span",{class:"status-dot"},null,-1)),c("span",null,p(F.value),1)],2)]),c("div",O,"@"+p(D.value),1),l[3]||(l[3]=c("div",{class:"user-info-backdrop"},null,-1))])]),c("div",N,[c("button",{class:"action-btn message-btn",onClick:Z},[n(h,{icon:"fluent-color:comment-multiple-32",class:"btn-icon"}),l[4]||(l[4]=c("span",null,"私信",-1))]),c("button",{class:"action-btn block-btn",onClick:ee},[n(h,{icon:"mdi:block-helper",class:"btn-icon"}),l[5]||(l[5]=c("span",null,"拉黑",-1))])])])],36)])):v("",!0)]),_:1})]))}}),[["__scopeId","data-v-83379e1d"]])
export{M as U}