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 fef1a84091..1f94dbd78d 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 @@ -883,7 +883,7 @@ function serialize_inline_component(node, component_name, context, anchor = cont b.init( 'children', context.state.options.dev - ? b.call('$.wrap_snippet', slot_fn, b.id(context.state.analysis.name)) + ? b.call('$.wrap_snippet', b.id(context.state.analysis.name), slot_fn) : slot_fn ) ); @@ -2754,7 +2754,7 @@ export const template_visitors = { let snippet = b.arrow(args, body); if (context.state.options.dev) { - snippet = b.call('$.wrap_snippet', snippet, b.id(context.state.analysis.name)); + snippet = b.call('$.wrap_snippet', b.id(context.state.analysis.name), snippet); } const declaration = b.const(node.expression, snippet); diff --git a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js index a9caa1d82d..d34b25cba1 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js @@ -1187,7 +1187,7 @@ const template_visitors = { return /** @type {import('estree').Expression} */ (context.visit(arg)); }); - if (!context.state.skip_hydration_boundaries) { + if (node.metadata.dynamic && !context.state.skip_hydration_boundaries) { context.state.template.push(block_open); } diff --git a/packages/svelte/src/internal/client/dom/blocks/snippet.js b/packages/svelte/src/internal/client/dom/blocks/snippet.js index 359275d603..6295c30ba5 100644 --- a/packages/svelte/src/internal/client/dom/blocks/snippet.js +++ b/packages/svelte/src/internal/client/dom/blocks/snippet.js @@ -46,10 +46,11 @@ export function snippet(anchor, get_snippet, ...args) { /** * In development, wrap the snippet function so that it passes validation, and so that the * correct component context is set for ownership checks - * @param {(node: import('#client').TemplateNode, ...args: any[]) => import('#client').Dom} fn * @param {any} component + * @param {(node: import('#client').TemplateNode, ...args: any[]) => import('#client').Dom} fn */ -export function wrap_snippet(fn, component) { +export function wrap_snippet(component, fn) { + // TODO do we need to pass in `component`? surely it's just `dev_current_component_function`? return add_snippet_symbol( (/** @type {import('#client').TemplateNode} */ node, /** @type {any[]} */ ...args) => { var previous_component_function = dev_current_component_function;