(drag = null)} />
(ui.activeContext = "queue")} oncontextmenu={(e) => { if (e.target === e.currentTarget) { e.preventDefault(); clearSel(); showMenu(-1, e.clientX, e.clientY); } }} tabindex="0" >
0} bind:clientHeight={headerHeight} > {#if ui.selectionMode} {#if queue.sel.length} {/if} {:else} {#if sourceColumn.enabled}
{/if} {#if settings.artSong > 0}
{/if} {#each visibleColumns as column}
{column.header}
{/each} {#if settings.enableFavorites}
{favoriteSymbol}
{/if} {#if settings.enableRatings}
{ratingHeader}
{/if} {#if showDownloads}
{downloadSymbols.idle}
{/if} {/if}
{#if lastHeaderHeight} {#key lastHeaderHeight} key} itemSize={lastHeaderHeight} scrollRef={queueElement} startMargin={lastHeaderHeight} > {#snippet children(key, index)} {@const track = queue.tracks[index]} {@const radio = isRadio(track)}
onDragStart(e, index)} ondragover={(e) => onDragOver(e, index)} ondrop={onDrop} onclick={(e) => { e.stopPropagation(); if (groupPhase === "from") { groupFrom = index; groupPhase = "to"; } else if (groupPhase === "to") { toggleSelectionRange(groupFrom, index); groupPhase = null; groupFrom = -1; } else { select( index, ui.selectionMode || e.ctrlKey || e.metaKey, e.shiftKey, ); } }} ondblclick={() => { if (ui.selectionMode) return; goto(index); clearSel(); }} oncontextmenu={(e) => { e.preventDefault(); showMenu(index, e.clientX, e.clientY); }} > {#if sourceColumn.enabled}
{sourceColumn.value(track, index)}
{/if} {#if settings.artSong > 0} {@const artId = songArtId(track)} {@const coverArtUrl = artId ? track.sourceId ? getSourceApi(track.sourceId).getCoverArt(artId, settings.artSong) : "" : ""}
{#if coverArtUrl} {/if}
{/if} {#each visibleColumns as column} {@const value = String(column.value(track, index))}
{value}
{/each} {#if settings.enableFavorites}
{#if !radio} { event.stopPropagation(); toggleStar(track); }} /> {/if}
{/if} {#if settings.enableRatings}
{#if !radio} { event.stopPropagation(); setRating(track, value); }} /> {/if}
{/if} {#if showDownloads}
{#if !radio} {@const isDownloaded = offlineManager.isSongDownloaded(track)} {@const isProgress = offlineManager.isDownloadActive(track) || offlineManager.isDownloadQueued(track)} {/if}
{/if}
{/snippet}
{/key} {/if}
{#if menu} (menu = null)} items={getQueueItems(menu.index)} /> {/if}