diff --git a/src/generators/dom/visitors/Element/Binding.ts b/src/generators/dom/visitors/Element/Binding.ts index 549cb05ecb17..ad22eaa27bc8 100644 --- a/src/generators/dom/visitors/Element/Binding.ts +++ b/src/generators/dom/visitors/Element/Binding.ts @@ -266,8 +266,8 @@ function getBindingValue( return `@toNumber(${state.parentNode}.${attribute.name})`; } - if (isMediaElement && attribute.name === 'buffered' || attribute.name === 'seekable' || attribute.name === 'played') { - return `@timeRangesToArray(${state.parentNode}.${attribute.name})` + if (isMediaElement && (attribute.name === 'buffered' || attribute.name === 'seekable' || attribute.name === 'played')) { + return `${state.parentNode}.${attribute.name} ? @timeRangesToArray(${state.parentNode}.${attribute.name}) : []` } // everything else diff --git a/test/js/samples/media-bindings/expected-bundle.js b/test/js/samples/media-bindings/expected-bundle.js index 631999398cff..a0326ae7319a 100644 --- a/test/js/samples/media-bindings/expected-bundle.js +++ b/test/js/samples/media-bindings/expected-bundle.js @@ -184,19 +184,19 @@ function create_main_fragment(state, component) { function audio_progress_loadedmetadata_handler() { audio_updating = true; - component.set({ buffered: timeRangesToArray(audio.buffered) }); + component.set({ buffered: audio.buffered ? timeRangesToArray(audio.buffered) : [] }); audio_updating = false; } function audio_loadedmetadata_handler() { audio_updating = true; - component.set({ seekable: timeRangesToArray(audio.seekable) }); + component.set({ seekable: audio.seekable ? timeRangesToArray(audio.seekable) : [] }); audio_updating = false; } function audio_timeupdate_handler() { audio_updating = true; - component.set({ played: timeRangesToArray(audio.played) }); + component.set({ played: audio.played ? timeRangesToArray(audio.played) : [] }); audio_updating = false; } diff --git a/test/js/samples/media-bindings/expected.js b/test/js/samples/media-bindings/expected.js index 52a6a00a5350..7e7817ec9415 100644 --- a/test/js/samples/media-bindings/expected.js +++ b/test/js/samples/media-bindings/expected.js @@ -5,19 +5,19 @@ function create_main_fragment(state, component) { function audio_progress_loadedmetadata_handler() { audio_updating = true; - component.set({ buffered: timeRangesToArray(audio.buffered) }); + component.set({ buffered: audio.buffered ? timeRangesToArray(audio.buffered) : [] }); audio_updating = false; } function audio_loadedmetadata_handler() { audio_updating = true; - component.set({ seekable: timeRangesToArray(audio.seekable) }); + component.set({ seekable: audio.seekable ? timeRangesToArray(audio.seekable) : [] }); audio_updating = false; } function audio_timeupdate_handler() { audio_updating = true; - component.set({ played: timeRangesToArray(audio.played) }); + component.set({ played: audio.played ? timeRangesToArray(audio.played) : [] }); audio_updating = false; } @@ -138,4 +138,4 @@ function SvelteComponent(options) { assign(SvelteComponent.prototype, proto ); -export default SvelteComponent; \ No newline at end of file +export default SvelteComponent;