<template>
    <div v-if="release">
        <div
            class="banner"
            @wheel.prevent="scrollBanner"
        >
            <div class="banner-trailer">
                <video
                    v-if="release.trailer"
                    :src="`/${release.trailer.path}`"
                    :poster="`/${release.poster && release.poster.path}`"
                    :alt="release.title"
                    class="banner-item"
                    controls
                >Sorry, the tailer cannot be played in your browser</video>
            </div>

            <a
                v-for="photo in photos"
                :key="`banner-${photo.index}`"
                :href="`/${photo.path}`"
                target="_blank"
                rel="noopener noreferrer"
            >
                <img
                    :src="`/${photo.path}`"
                    :alt="`Photo ${photo.index + 1}`"
                    class="banner-item"
                >
            </a>
        </div>

        <h2 class="row title">{{ release.title }}</h2>

        <span class="row">
            <a
                :href="release.url"
                :title="release.shootId || release.entryId"
                target="_blank"
                rel="noopener noreferrer"
                class="date"
            >{{ formatDate(release.date, 'MMMM D, YYYY') }}</a>
        </span>

        <ul class="row actors">
            <li
                v-for="actor in release.actors"
                :key="actor.id"
                class="actor"
            >
                <a
                    :href="`/actor/${actor.slug}`"
                    target="_blank"
                    rel="noopener noreferrer"
                    class="actor-link"
                >{{ actor.name }}</a>
            </li>
        </ul>

        <span class="row site">
            <a
                :href="release.site.url"
                target="_blank"
                rel="noopener noreferrer"
            >{{ release.site.name }}</a>

            (<a
                :href="release.network.url"
                target="_blank"
                rel="noopener noreferrer"
            >{{ release.network.name }}</a>)
        </span>

        <p class="row description">{{ release.description }}</p>

        <ul class="row tags">
            <li
                v-for="tag in release.tags"
                :key="tag.tag"
                class="tag"
            >
                <a
                    :href="`/tag/${tag.slug}`"
                    target="_blank"
                    rel="noopener noreferrer"
                    class="tag-link"
                >{{ tag.tag }}</a>
            </li>
        </ul>
    </div>
</template>

<script>
function pageTitle() {
    return this.release && this.release.title;
}

function scrollBanner(event) {
    event.currentTarget.scrollLeft += event.deltaY; // eslint-disable-line no-param-reassign
}

function photos() {
    if (this.release.photos.length) {
        return this.release.photos;
    }

    if (this.release.poster && !this.release.trailer) {
        return [this.release.poster];
    }

    return [];
}

async function mounted() {
    [this.release] = await this.$store.dispatch('fetchReleases', this.$route.params.releaseId);
}

export default {
    data() {
        return {
            release: null,
        };
    },
    computed: {
        pageTitle,
        photos,
    },
    mounted,
    methods: {
        scrollBanner,
    },
};
</script>

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

.banner {
    white-space: nowrap;
    overflow-x: auto;
    margin: 0 0 1rem 0;
    scrollbar-width: none;
    box-shadow: 0 0 3px $shadow;
    font-size: 0;

    &::-webkit-scrollbar {
        display: none;
    }
}

.banner-trailer {
    display: inline-block;
}

.banner-item {
    height: 20rem;
    vertical-align: middle;
}

.row {
    display: block;
    padding: 0 1rem;
    margin: 0 0 .5rem 0;
}

.actors,
.tags {
    list-style: none;
}

.actor,
.tag {
    display: inline-block;
    text-transform: capitalize;

    &:not(:last-child)::after {
        content: ',';
        display: inline-block;
        width: .6rem;
    }
}
</style>
