diff --git a/packages/svelte/src/internal/client/dom/elements/bindings/media.js b/packages/svelte/src/internal/client/dom/elements/bindings/media.js index 87da950375..eb538169ba 100644 --- a/packages/svelte/src/internal/client/dom/elements/bindings/media.js +++ b/packages/svelte/src/internal/client/dom/elements/bindings/media.js @@ -1,4 +1,7 @@ +/** @import { Effect } from '#client' */ +import { INERT } from '#client/constants'; import { render_effect, effect, teardown } from '../../../reactivity/effects.js'; +import { active_effect } from '../../../runtime.js'; import { listen } from './shared.js'; /** @param {TimeRanges} ranges */ @@ -19,6 +22,8 @@ function time_ranges_to_array(ranges) { * @returns {void} */ export function bind_current_time(media, get, set = get) { + var effect = /** @type {Effect} */ (active_effect); + /** @type {number} */ var raf_id; /** @type {number} */ @@ -34,6 +39,8 @@ export function bind_current_time(media, get, set = get) { raf_id = requestAnimationFrame(callback); } + if ((effect.f & INERT) !== 0) return; + var next_value = media.currentTime; if (value !== next_value) { set((value = next_value)); diff --git a/packages/svelte/tests/runtime-runes/samples/transition-media-binding-outro/_config.js b/packages/svelte/tests/runtime-runes/samples/transition-media-binding-outro/_config.js new file mode 100644 index 0000000000..226e28630b --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/transition-media-binding-outro/_config.js @@ -0,0 +1,13 @@ +import { flushSync } from '../../../../src/index-client.js'; +import { test } from '../../test'; + +export default test({ + test({ target }) { + const button = /** @type {HTMLButtonElement} */ (target.querySelector('button')); + const audio = /** @type {HTMLAudioElement} */ (target.querySelector('audio')); + + flushSync(() => button.click()); + audio.currentTime = 1; + audio.dispatchEvent(new Event('timeupdate')); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/transition-media-binding-outro/main.svelte b/packages/svelte/tests/runtime-runes/samples/transition-media-binding-outro/main.svelte new file mode 100644 index 0000000000..199c06c160 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/transition-media-binding-outro/main.svelte @@ -0,0 +1,11 @@ + + + + +{#if item} + +{/if}