diff --git a/src/runtime/internal/transitions.ts b/src/runtime/internal/transitions.ts index 91f243b4d6e..e3a0b44fc49 100644 --- a/src/runtime/internal/transitions.ts +++ b/src/runtime/internal/transitions.ts @@ -28,15 +28,17 @@ let outros; export function group_outros() { outros = { - remaining: 0, - callbacks: [] + r: 0, // remaining outros + c: [], // callbacks + p: outros // parent group }; } export function check_outros() { - if (!outros.remaining) { - run_all(outros.callbacks); + if (!outros.r) { + run_all(outros.c); } + outros = outros.p; } export function transition_in(block, local?: 0 | 1) { @@ -51,7 +53,7 @@ export function transition_out(block, local: 0 | 1, detach: 0 | 1, callback) { if (outroing.has(block)) return; outroing.add(block); - outros.callbacks.push(() => { + outros.c.push(() => { outroing.delete(block); if (callback) { if (detach) block.d(1); @@ -153,7 +155,7 @@ export function create_out_transition(node: Element & ElementCSSInlineStyle, fn: const group = outros; - group.remaining += 1; + group.r += 1; function go() { const { @@ -178,10 +180,10 @@ export function create_out_transition(node: Element & ElementCSSInlineStyle, fn: dispatch(node, false, 'end'); - if (!--group.remaining) { + if (!--group.r) { // this will result in `end()` being called, // so we don't need to clean up here - run_all(group.callbacks); + run_all(group.c); } return false; @@ -266,7 +268,7 @@ export function create_bidirectional_transition(node: Element & ElementCSSInline if (!b) { // @ts-ignore todo: improve typings program.group = outros; - outros.remaining += 1; + outros.r += 1; } if (running_program) { @@ -309,7 +311,7 @@ export function create_bidirectional_transition(node: Element & ElementCSSInline clear_animation(); } else { // outro — needs to be coordinated - if (!--running_program.group.remaining) run_all(running_program.group.callbacks); + if (!--running_program.group.r) run_all(running_program.group.c); } } diff --git a/test/runtime/samples/each-block-keyed-nested/_config.js b/test/runtime/samples/each-block-keyed-nested/_config.js index b45716be4ff..3440874a8cc 100644 --- a/test/runtime/samples/each-block-keyed-nested/_config.js +++ b/test/runtime/samples/each-block-keyed-nested/_config.js @@ -7,10 +7,10 @@ export default { component.desks = [ { id: 1, - teams: [{ id: 2 }] + teams: [] } ]; - assert.htmlEqual(target.innerHTML, '2'); + assert.htmlEqual(target.innerHTML, ''); } };