From 8a297150e93996e9dbe6e46bc4f0bfac6a640f71 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 22 Jul 2024 18:34:36 -0400 Subject: [PATCH] actually we need a proper function --- .../3-transform/client/visitors/template.js | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js index 073b118ced..56b89dcb3e 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js @@ -1139,16 +1139,20 @@ function serialize_event_handler(node, { state, visit }) { handler = node.expression; // Event handlers can be dynamic (source/store/prop/conditional etc) - const dynamic_handler = () => { - return b.arrow( + const dynamic_handler = () => + b.function( + null, [b.rest(b.id('$$args'))], - b.call( - b.member(/** @type {Expression} */ (visit(handler)), b.id('apply'), false, true), - b.this, - b.id('$$args') - ) + b.block([ + b.return( + b.call( + b.member(/** @type {Expression} */ (visit(handler)), b.id('apply'), false, true), + b.this, + b.id('$$args') + ) + ) + ]) ); - }; if (handler.type === 'Identifier' || handler.type === 'MemberExpression') { const id = object(handler);