= pW) { tipX = r.right + window.scrollX + 10; tipFlipLeft = false; } else { tipX = Math.max(8, r.left + window.scrollX - pW - 10); tipFlipLeft = true; } tipY = r.top + window.scrollY + r.height / 2; showTip = true; $dispatch('avatar-popup-open', player.name); }"
@mouseleave="if (!isTouch) showTip = false"
@click="handleAvatarClick($event, player); if (isTouch) { if (showTip) { showTip = false; } else { const r = $el.getBoundingClientRect(); const pW = 200; const sr = window.innerWidth - r.right - 10; if (sr >= pW) { tipX = r.right + window.scrollX + 10; tipFlipLeft = false; } else { tipX = Math.max(8, r.left + window.scrollX - pW - 10); tipFlipLeft = true; } tipY = r.top + window.scrollY + r.height / 2; showTip = true; $dispatch('avatar-popup-open', player.name); } }">
