{#if media}
{#if mediaList.length > 1} {/if} banner
cover-art

{anilistClient.title(media)}

{#if media.averageScore}
Rating: {media.averageScore + '%'}
{/if} {#if media.format}
Format: {formatMap[media.format]}
{/if} {#if media.episodes !== 1 && getMediaMaxEp(media)}
Episodes: {getMediaMaxEp(media)}
{:else if media.duration}
Length: {media.duration + ' min'}
{/if} {#if media.stats?.scoreDistribution}
Reviews: {anilistClient.reviews(media)}
{/if}
{#each media.tags as tag}
{tag.name}: {tag.rank}%
{/each}
{#each media.genres as genre}
{genre}
{/each}
{#if media.description}

Synopsis

{media.description?.replace(/<[^>]*>/g, '') || ''}
{/if} node.type === 'ANIME').sort((a, b) => { const typeComparison = a.relationType.localeCompare(b.relationType) if (typeComparison !== 0) { return typeComparison } return (a.node.seasonYear || 0) - (b.node.seasonYear || 0) })} promise={ anilistClient.searchIDS({ page: 1, perPage: 50, id: media.relations?.edges?.filter(({ node }) => node.type === 'ANIME').map(({ node }) => node.id) }) } let:item let:promise title='Relations'>
{#await promise} {:then res } {#if res} {/if} {/await}
{#await mediaRecommendation then res} {@const mediaRecommendation = res?.data?.Media} node.mediaRecommendation).sort((a, b) => b.node.rating - a.node.rating) } promise={ anilistClient.searchIDS({ page: 1, perPage: 50, id: mediaRecommendation.recommendations?.edges?.map(({ node }) => node.mediaRecommendation?.id) }) } let:item let:promise title='Recommendations'>
{#await promise} {:then res } {#if res} {/if} {/await}
{/await}

Episodes

{ episodeOrder = !episodeOrder }}>Reverse
{/if}