Files
CoreInject/frontend/dist/assets/CTwXCDf2.js
2025-11-14 04:00:32 +08:00

20 lines
4.1 KiB
JavaScript

import{d as e,r as a,f as l,w as s,Q as u,c as t,g as n,i,j as o,k as r,l as v,m as c,t as d,q as m,b,x as p,T as f,e as k,n as y}from"./CD7TqNEc.js"
import{b as g,_ as U,a as h}from"./DTEPVF5R.js"
import{u as w}from"./Tr3ZfNrL.js"
const I={key:0,class:"background-avatar-blur"},x=["src"],R={class:"card-content"},T={class:"content-layout"},j={class:"avatar-wrapper"},L={class:"user-info"},C={class:"user-name-row"},_={class:"user-name"},O={class:"user-username"},N={class:"action-buttons"},M=h(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:h}){const M=e,W=h,$=a(null),q=a(null),B=a(""),E=a(!1),{isUserOnline:z,queryUsersOnlineStatus:H}=w(),P=l(()=>z(M.userId)),Q=l(()=>E.value&&""!==B.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(()=>{S.value=!1,A=null},3e3)}catch(e){S.value=!1}}}else A&&(clearTimeout(A),A=null)},{immediate:!0})
const G=e=>{E.value=!0,B.value&&B.value.startsWith("blob:")&&URL.revokeObjectURL(B.value),B.value=URL.createObjectURL(e)}
s(()=>M.visible,e=>{e?E.value=!1:(E.value=!1,B.value&&B.value.startsWith("blob:")&&(URL.revokeObjectURL(B.value),B.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(()=>{B.value&&B.value.startsWith("blob:")&&URL.revokeObjectURL(B.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",I,[B.value?(k(),r("img",{key:0,src:B.value,alt:"",class:"background-image"},null,8,x)):v("",!0)])):v("",!0),l[1]||(l[1]=c("div",{class:"background-overlay"},null,-1))],2),c("div",R,[c("div",T,[c("div",j,[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",L,[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(U,{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(U,{icon:"mdi:block-helper",class:"btn-icon"}),l[5]||(l[5]=c("span",null,"拉黑",-1))])])])],36)])):v("",!0)]),_:1})]))}}),[["__scopeId","data-v-c775c2dc"]])
export{M as U}