diff --git a/.changeset/giant-gorillas-deny.md b/.changeset/giant-gorillas-deny.md new file mode 100644 index 0000000..3031b6d --- /dev/null +++ b/.changeset/giant-gorillas-deny.md @@ -0,0 +1,5 @@ +--- +'svelte-podcast': minor +--- + +Adds the ability to bind episode metadata to the audio store diff --git a/src/lib/components/audio-loader.svelte b/src/lib/components/audio-loader.svelte index 7da7037..732f898 100644 --- a/src/lib/components/audio-loader.svelte +++ b/src/lib/components/audio-loader.svelte @@ -2,44 +2,50 @@ import { audio_autoplay, audio_current_time, + audio_duration, audio_element, - audio_metadata, + audio_ended, + audio_loading, audio_muted, + audio_paused, audio_playback_rate, audio_src, audio_start_at, audio_volume, } from '$lib/context/audio-internals'; import type { PlayerElement } from '$lib/types/types'; - import { isBoolean, isNumber } from '$pkg/type-guards'; + // readonly values let element: PlayerElement; - let currentTime = $audio_start_at; - let volume = $audio_volume; - + let current_time = $audio_start_at; let duration = 0; let ended = true; - let muted = false; let paused = false; + + // handler values + let volume = $audio_volume; + let muted = false; let playbackRate = 1; - // Update stores based on bindings + // readonly - stores will update when bindings change $: audio_element.set(element); - $: audio_current_time.set(currentTime); - $: audio_metadata.update((x) => ({ ...x, duration, ended, paused })); + $: audio_current_time.set(current_time); + $: audio_duration.set(duration); + $: audio_ended.set(ended); + $: audio_paused.set(paused); - // Update bindings based on stores + // handlers - when store value changes, the binding will update the audio element $: volume = $audio_volume; $: muted = $audio_muted; $: playbackRate = $audio_playback_rate; - $: currentTime = $audio_start_at; + $: current_time = $audio_start_at;