diff --git a/packages/svelte/src/internal/client/dom/elements/transitions.js b/packages/svelte/src/internal/client/dom/elements/transitions.js index c994b54257..01eca83c56 100644 --- a/packages/svelte/src/internal/client/dom/elements/transitions.js +++ b/packages/svelte/src/internal/client/dom/elements/transitions.js @@ -188,7 +188,9 @@ export function transition(flags, element, get_fn, get_params) { // If a transition is still ongoing, we use the existing options rather than generating // new ones. This ensures that reversible transitions reverse smoothly, rather than // jumping to a new spot because (for example) a different `duration` was used - return (current_options ??= get_fn()(element, get_params?.(), { direction })); + return (current_options ??= get_fn()(element, get_params?.() ?? /** @type {P} */ ({}), { + direction + })); } /** @type {TransitionManager} */ diff --git a/packages/svelte/tests/runtime-legacy/samples/transition-js-deferred-b/main.svelte b/packages/svelte/tests/runtime-legacy/samples/transition-js-deferred-b/main.svelte index 2cd1dc3e7c..c75bbd0ef7 100644 --- a/packages/svelte/tests/runtime-legacy/samples/transition-js-deferred-b/main.svelte +++ b/packages/svelte/tests/runtime-legacy/samples/transition-js-deferred-b/main.svelte @@ -4,7 +4,7 @@ let foo_text; let bar_text; - function foo(node, params) { + function foo(node, { duration = 100 }) { foo_text = node.textContent; return () => { @@ -13,7 +13,7 @@ } return { - duration: 100, + duration, tick: t => { node.foo = t; } @@ -21,7 +21,7 @@ }; } - function bar(node, params) { + function bar(node, { duration = 100 }) { bar_text = node.textContent; return () => { @@ -30,7 +30,7 @@ } return { - duration: 100, + duration, tick: t => { node.foo = t; } @@ -43,4 +43,4 @@
a
{:else}
b
-{/if} \ No newline at end of file +{/if}