{#key fontsReady()} {/key}

{exhibit.title}

{#if exhibit.description} {#each exhibit.description.split('\n').filter(Boolean) as line}

{line}

{/each} {/if}
{#if pre.state === 'running' || (pre.state === 'complete' && pre.failed > 0)}
{#if pre.state === 'running'} Caching exhibit for offline listening… {pre.done} / {pre.total} {#if pre.failed > 0}({pre.failed} retrying){/if} {:else} {pre.total - pre.failed} of {pre.total} files cached. {pre.failed} failed to download — they will stream over the network when played. {/if}
{/if}
{#each artists as artist (artist.id)} {@const cover = artist.images[0]}
{#if cover} {:else} {/if}
{artist.name} {artistYears(artist)}
{/each}