From dfaf0d257c949876bd0a0813f4f3dd14810bd43b Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Fri, 7 Feb 2025 20:13:05 +0000 Subject: [PATCH] fix --- .../src/internal/client/dom/blocks/boundary.js | 2 +- packages/svelte/src/internal/client/runtime.js | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/svelte/src/internal/client/dom/blocks/boundary.js b/packages/svelte/src/internal/client/dom/blocks/boundary.js index 289d182ab4..224131694d 100644 --- a/packages/svelte/src/internal/client/dom/blocks/boundary.js +++ b/packages/svelte/src/internal/client/dom/blocks/boundary.js @@ -179,7 +179,7 @@ export function boundary(node, props, children) { var sources = boundary.fn.sources; for (var [source, entry] of sources) { if (source.v !== entry.v) { - mark_reactions(source, DIRTY); + mark_reactions(source, DIRTY, source); } } sources.clear(); diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index d917eec3ed..e42caa06b1 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -789,14 +789,11 @@ function flush_deferred() { * @returns {void} */ export function schedule_effect(signal, source) { - if (scheduler_mode === FLUSH_MICROTASK) { - if (!is_micro_task_queued) { - is_micro_task_queued = true; - queueMicrotask(flush_deferred); - } - } - if (source && (signal.f & ASYNC_DERIVED) !== 0) { + if (active_effect === signal) { + set_signal_status(signal, MAYBE_DIRTY); + return; + } var boundary = get_boundary(signal); // @ts-ignore var sources = boundary.fn.sources; @@ -807,6 +804,13 @@ export function schedule_effect(signal, source) { } } + if (scheduler_mode === FLUSH_MICROTASK) { + if (!is_micro_task_queued) { + is_micro_task_queued = true; + queueMicrotask(flush_deferred); + } + } + last_scheduled_effect = signal; var effect = signal;