Files
classroomio/apps/dashboard/src/lib/features/ui/media-player/media-player.svelte
T

29 lines
830 B
Svelte
Raw Normal View History

2026-03-09 11:18:22 +01:00
<script lang="ts">
import type { VideoSource, MediaPlayerOptions } from './types';
import PlyrPlayer from './players/plyr-player.svelte';
import MusePlayer from './players/muse-player.svelte';
interface Props {
source: VideoSource;
options?: MediaPlayerOptions;
class?: string;
}
let { source, options = {}, class: className = '' }: Props = $props();
// Muse.ai requires iframe, everything else uses Plyr
const isMuse = $derived.by(() => {
return source.type === 'muse' && source.metadata?.svid;
});
const poster = $derived(source.type === 'upload' ? source.metadata?.thumbnailUrl : undefined);
</script>
<div class="mb-5 {className}">
{#if isMuse}
<MusePlayer svid={source.metadata?.svid} {options} />
{:else}
<PlyrPlayer src={source.url} {poster} {options} />
{/if}
</div>