{ e.preventDefault(); e.stopPropagation(); menuOpen = true; contextMenuOpen = true; contextMenuPos = { x: e.clientX, y: e.clientY }; }} onmouseenter={measureOverflowOnce} onfocus={measureOverflowOnce} role="button" tabindex="0" onkeydown={(e) => e.key === 'Enter' && onclick?.()} >
{#if !imageError && artwork} {title} {/if} {#if hasOverlay}
{#if showGenre && (genre || formattedDate)}
{#if genre}{genre}{/if} {#if formattedDate} {formattedDate} {/if}
{/if}
{#if showFavoriteButton} {:else}
{/if} {#if onPlay} {/if} {#if hasMenu}
{ menuOpen = open; if (!open) { contextMenuOpen = false; contextMenuPos = null; } }} />
{/if}
{/if} {#if sourceBadge}
{#if sourceBadge === 'user'} {:else if sourceBadge === 'plex'} Plex {:else if sourceBadge === 'qobuz_purchase'} Qobuz purchase {:else} Qobuz {/if}
{/if}
0} style="--ticker-offset: {titleOffset}; --ticker-duration: {titleDuration};" bind:this={titleRef} > {title}
{#if artistClickable} {:else}
0} style="--ticker-offset: {artistOffset}; --ticker-duration: {artistDuration};" bind:this={artistRef} > {artist}
{/if} {#if quality}
{quality}
{/if}