<template>
	<div
		v-if="movie"
		class="movie"
	>
		<Media
			:release="movie"
		/>

		<Details :release="movie" />

		<div class="column">
			<h2 class="title">{{ movie.title }}</h2>

			<p>{{ movie.description }}</p>

			<div
				v-lazy-container="{ selector: '.lazy' }"
				class="actors"
			>
				<ActorTile
					v-for="actor in movie.actors"
					:key="`actor-${actor.id}`"
					:actor="actor"
				/>
			</div>

			<Tags
				v-if="movie.tags && movie.tags.length > 0"
				:tags="movie.tags"
			/>

			<Releases
				:releases="movie.scenes"
			/>
		</div>
	</div>
</template>

<script>
import Media from './media.vue';
import Details from './details.vue';
import Tags from './tags.vue';
import Releases from './releases.vue';
import ActorTile from '../actors/tile.vue';

async function mounted() {
	this.movie = await this.$store.dispatch('fetchMovieById', this.$route.params.movieId);
}

export default {
	components: {
		Details,
		Tags,
		Media,
		ActorTile,
		Releases,
	},
	data() {
		return {
			movie: null,
		};
	},
	mounted,
};
</script>

<style lang="scss" scoped>
.title {
	padding: .5rem 0;
	margin: 0 0 1rem 0;
	color: var(--shadow-strong);
}

.covers {
	display: inline-block;
	margin: 0 0 1rem 0;
}

.cover {
	height: 20rem;
	margin: 0 1rem 0 0;
	box-shadow: 0 0 3px var(--shadow-weak);
}

.trailer {
	height: 20rem;
}

.date {
	display: inline-block;
	padding: 1rem;
}

.content-inner {
	padding: 1rem;
}

.actors {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
    grid-gap: .5rem;
    flex-grow: 1;
    flex-wrap: wrap;
	margin: 0 0 1rem 0;
}
</style>