{ 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}
{#if sourceBadge}
{#if sourceBadge === 'user'}
{:else if sourceBadge === 'plex'}

{:else if sourceBadge === 'qobuz_purchase'}

{:else}

{/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}