diff --git a/.changeset/violet-cows-reply.md b/.changeset/violet-cows-reply.md new file mode 100644 index 000000000000..360dfb6a5694 --- /dev/null +++ b/.changeset/violet-cows-reply.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: make Tween work with continuous target changes diff --git a/packages/svelte/src/motion/tweened.js b/packages/svelte/src/motion/tweened.js index d732dbc2831a..8aaefe5a2caf 100644 --- a/packages/svelte/src/motion/tweened.js +++ b/packages/svelte/src/motion/tweened.js @@ -230,7 +230,6 @@ export class Tween { set(value, options) { set(this.#target, value); - let previous_value = this.#current.v; let previous_task = this.#task; let started = false; @@ -254,10 +253,12 @@ export class Tween { if (!started) { started = true; - fn = interpolate(/** @type {any} */ (previous_value), value); + const prev = this.#current.v; + + fn = interpolate(prev, value); if (typeof duration === 'function') { - duration = duration(/** @type {any} */ (previous_value), value); + duration = duration(prev, value); } previous_task?.abort();