2022-06-04 18:34:11 -05:00
|
|
|
<script lang="ts">
|
|
|
|
import { fade } from 'svelte/transition';
|
2023-02-15 18:56:19 +01:00
|
|
|
import { createEventDispatcher } from 'svelte';
|
2022-07-16 23:52:00 -05:00
|
|
|
import LoadingSpinner from '../shared-components/loading-spinner.svelte';
|
2023-02-15 18:56:19 +01:00
|
|
|
import { getFileUrl } from '@api';
|
2022-06-04 18:34:11 -05:00
|
|
|
|
|
|
|
export let assetId: string;
|
2023-01-09 14:16:08 -06:00
|
|
|
export let publicSharedKey = '';
|
2022-06-04 18:34:11 -05:00
|
|
|
|
|
|
|
let isVideoLoading = true;
|
2022-11-18 23:12:54 -06:00
|
|
|
const dispatch = createEventDispatcher();
|
2022-06-04 18:34:11 -05:00
|
|
|
|
2023-02-15 18:56:19 +01:00
|
|
|
const handleCanPlay = (ev: Event & { currentTarget: HTMLVideoElement }) => {
|
|
|
|
const playerNode = ev.currentTarget;
|
2022-06-04 18:34:11 -05:00
|
|
|
|
2022-08-24 10:21:41 +07:00
|
|
|
playerNode.muted = true;
|
|
|
|
playerNode.play();
|
|
|
|
playerNode.muted = false;
|
2022-07-26 12:28:07 -05:00
|
|
|
|
2022-08-24 10:21:41 +07:00
|
|
|
isVideoLoading = false;
|
2022-06-04 18:34:11 -05:00
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
2022-07-16 23:52:00 -05:00
|
|
|
<div
|
|
|
|
transition:fade={{ duration: 150 }}
|
|
|
|
class="flex place-items-center place-content-center h-full select-none"
|
|
|
|
>
|
2023-02-15 18:56:19 +01:00
|
|
|
<video
|
|
|
|
controls
|
|
|
|
class="h-full object-contain"
|
|
|
|
on:canplay={handleCanPlay}
|
|
|
|
on:ended={() => dispatch('onVideoEnded')}
|
|
|
|
>
|
|
|
|
<source src={getFileUrl(assetId, false, true, publicSharedKey)} type="video/mp4" />
|
|
|
|
<track kind="captions" />
|
|
|
|
</video>
|
|
|
|
|
|
|
|
{#if isVideoLoading}
|
|
|
|
<div class="absolute flex place-items-center place-content-center">
|
|
|
|
<LoadingSpinner />
|
|
|
|
</div>
|
2022-06-04 18:34:11 -05:00
|
|
|
{/if}
|
|
|
|
</div>
|