From 7d9c6f50b5fc3978f73c45c28b0483c5e8558c02 Mon Sep 17 00:00:00 2001 From: Brad Dougherty Date: Tue, 12 Oct 2021 19:18:24 -0400 Subject: [PATCH 1/4] Add support for binding to media element readyState --- src/compiler/compile/nodes/Binding.ts | 3 +- src/compiler/compile/nodes/Element.ts | 3 +- .../render_dom/wrappers/Element/index.ts | 8 ++- test/js/samples/media-bindings/expected.js | 53 ++++++++++++------- test/js/samples/media-bindings/input.svelte | 3 +- test/js/samples/video-bindings/expected.js | 37 ++++++++++--- test/js/samples/video-bindings/input.svelte | 3 +- 7 files changed, 80 insertions(+), 30 deletions(-) diff --git a/src/compiler/compile/nodes/Binding.ts b/src/compiler/compile/nodes/Binding.ts index f826df482850..755926223f18 100644 --- a/src/compiler/compile/nodes/Binding.ts +++ b/src/compiler/compile/nodes/Binding.ts @@ -22,7 +22,8 @@ const read_only_media_attributes = new Set([ 'seeking', 'ended', 'videoHeight', - 'videoWidth' + 'videoWidth', + 'readyState' ]); export default class Binding extends Node { diff --git a/src/compiler/compile/nodes/Element.ts b/src/compiler/compile/nodes/Element.ts index 298276c437c8..9fcd6e468fda 100644 --- a/src/compiler/compile/nodes/Element.ts +++ b/src/compiler/compile/nodes/Element.ts @@ -873,7 +873,8 @@ export default class Element extends Node { name === 'muted' || name === 'playbackRate' || name === 'seeking' || - name === 'ended' + name === 'ended' || + name === 'readyState' ) { if (this.name !== 'audio' && this.name !== 'video') { return component.error(binding, compiler_errors.invalid_binding_element_with('audio> or