<template>
	<div
		:id="`${release.type}-${release.id}`"
		:class="{ new: release.isNew }"
		class="tile"
	>
		<span class="poster">
			<a
				:href="`/scene/${release.id}/${release.slug}`"
				target="_blank"
				rel="noopener noreferrer"
				class="link"
			>
				<img
					v-if="release.poster"
					:data-src="sfw ? `/img/${release.poster.sfw.thumbnail}` : `/media/${release.poster.thumbnail}`"
					:data-loading="sfw ? `/img/${release.poster.sfw.lazy}` : `/media/${release.poster.lazy}`"
					:alt="release.title"
					class="thumbnail"
				>

				<span
					v-else-if="release.covers && release.covers.length > 0"
					class="covers"
				>
					<img
						v-for="cover in release.covers"
						:key="cover.id"
						:data-src="sfw ? `/img/${cover.sfw.thumbnail}` : `/media/${cover.thumbnail}`"
						:data-loading="sfw ? `/img/${cover.sfw.lazy}` : `/media/${cover.lazy}`"
						:alt="release.title"
						class="thumbnail cover"
					>
				</span>

				<div
					v-else
					:title="release.title"
					class="thumbnail"
				>No thumbnail available</div>
			</a>

			<Details :release="release" />
		</span>

		<div class="info">
			<a
				:href="`/scene/${release.id}/${release.slug}`"
				target="_blank"
				rel="noopener noreferrer"
				class="row link"
			>
				<h3
					v-if="release.title"
					v-tooltip.bottom="release.title"
					:title="release.title"
					class="title"
				>{{ release.title }}</h3>

				<h3
					v-else-if="release.actors.length > 0"
					class="title title-composed"
				>{{ release.actors[0].name }} for {{ release.entity.name }}</h3>

				<h3
					v-else
					class="title title-empty"
				>{{ release.entity.name }}</h3>
			</a>

			<span class="row">
				<ul
					class="actors nolist"
					:title="release.actors.map(actor => actor.name).join(', ')"
				>
					<li
						v-for="actor in release.actors"
						:key="actor.id"
						class="actor"
					>
						<router-link
							:to="{ name: 'actor', params: { actorId: actor.id, actorSlug: actor.slug } }"
							class="actor-link"
						>{{ actor.name }}</router-link>
					</li>
				</ul>
			</span>

			<div class="labels">
				<router-link
					v-if="release.shootId && release.studio"
					:to="{ name: 'studio', params: { entitySlug: release.studio.slug } }"
					:title="release.studio && release.studio.name"
					class="shoot nolink"
				>{{ release.shootId }}</router-link>

				<span
					v-else-if="release.shootId"
					:title="release.studio && release.studio.name"
					class="shoot nolink"
				>{{ release.shootId }}</span>

				<ul
					v-if="release.tags.length > 0"
					:title="release.tags.map(tag => tag.name).join(', ')"
					class="tags nolist"
				>
					<li
						v-for="tag in release.tags"
						:key="`tag-${tag.slug}`"
						class="tag"
					>
						<router-link
							:to="`/tag/${tag.slug}`"
							class="tag-link"
						>{{ tag.name }}</router-link>
					</li>
				</ul>
			</div>
		</div>
	</div>
</template>

<script>
import Details from './tile-details.vue';

function sfw() {
	return this.$store.state.ui.sfw;
}

export default {
	components: {
		Details,
	},
	props: {
		release: {
			type: Object,
			default: null,
		},
	},
	computed: {
		sfw,
	},
};
</script>

<style lang="scss" scoped>
@import 'theme';

.tile {
    background: var(--background);
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    overflow: hidden;
    box-shadow: 0 0 3px var(--darken-weak);
    height: 100%;

	&.new .poster::after {
		content: 'new';
		position: absolute;
		top: 0;
		right: 0;
		padding: .15rem .25rem .15rem .35rem;
		border-radius: 0 0 0 .5rem;
		color: var(--text-light);
		background: var(--primary);
		font-size: .8rem;
		font-weight: bold;
	}
}

.poster {
    position: relative;
    margin: 0 0 .6rem 0;
}

.covers {
    background: var(--profile);
    display: flex;

    .cover {
        width: 50%;
    }
}

.thumbnail {
    width: 100%;
    height: 14rem;
    display: flex;
    justify-content: center;
    align-items: center;
    object-fit: cover;
    background-position: center;
    background-size: cover;
    background-color: var(--shadow-hint);
    color: var(--shadow);
    text-shadow: 1px 1px 0 var(--highlight);
}

.row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-sizing: border-box;
    padding: 0 .5rem;
    margin: 0 0 .25rem 0;
}

.info {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

.link {
    text-decoration: none;
}

.title {
    margin: 0;
    color: var(--text);
    font-size: 1rem;
    line-height: 1.5;
	white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

.title-composed,
.title-empty {
	color: var(--shadow);
}

.actors {
    word-wrap: break-word;
    overflow: hidden;
    max-height: 1.5rem;
    line-height: 1.5rem;
	margin: 0 0 .25rem 0;
}

.actor:not(:last-of-type)::after {
    content: ",";
	margin: 0 .25rem 0 0;
}

.actor-link {
    color: var(--link);
    text-decoration: none;

    &:hover {
        color: var(--primary);
    }
}

.labels {
    padding: .1rem .5rem 1.5rem .5rem;
    max-height: .5rem;
    overflow-y: hidden;
	font-size: 0;
    line-height: 2;
}

.shoot {
	display: inline;
	padding: .25rem .5rem;
	background: var(--primary);
	color: var(--text-light);
	font-size: 0.75rem;
	font-weight: bold;
	box-shadow: inset 0 0 3px var(--shadow-weak);
}

.tags {
	display: inline;
    word-wrap: break-word;
}

.tag {
    margin: 0 0 1rem 0;
}

.tag-link {
	background: var(--background);
    color: var(--shadow);
    display: inline-block;
    padding: .25rem .5rem;
    font-size: .75rem;
    font-weight: bold;
    text-decoration: none;
    line-height: 1;
	box-shadow: 0 0 3px var(--shadow-weak);

    &:hover {
        color: var(--primary);
    }
}
</style>