separate groupOutros from transitionsManager

pull/1569/head
Rich Harris 6 years ago
parent bde21dad87
commit 7678b36581

@ -303,11 +303,13 @@ export default class Compiler {
},
});
if (name === 'transitionManager') {
if (name === 'transitionManager' || name === 'outros') {
// special case
const global = `_svelteTransitionManager`;
const global = name === 'outros'
? `_svelteOutros`
: `_svelteTransitionManager`;
inlineHelpers += `\n\nvar ${this.alias('transitionManager')} = window.${global} || (window.${global} = ${code});\n\n`;
inlineHelpers += `\n\nvar ${this.alias(name)} = window.${global} || (window.${global} = ${code});\n\n`;
} else if (name === 'escaped' || name === 'missingComponent') {
// vars are an awkward special case... would be nice to avoid this
const alias = this.alias(name);

@ -401,7 +401,7 @@ export default class Component extends Node {
if (${name}) {
${this.compiler.options.nestedTransitions
? deindent`
@transitionManager.groupOutros();
@groupOutros();
const old_component = ${name};
old_component._fragment.o(() => {
old_component.destroy();

@ -324,7 +324,7 @@ export default class EachBlock extends Node {
block.builders.update.addBlock(deindent`
const ${this.each_block_value} = ${snippet};
${this.block.hasOutros && `@transitionManager.groupOutros();`}
${this.block.hasOutros && `@groupOutros();`}
${this.block.hasAnimation && `for (let #i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].r();`}
${blocks} = @updateKeyedEach(${blocks}, #component, changed, ${get_key}, ${dynamic ? '1' : '0'}, ctx, ${this.each_block_value}, ${lookup}, ${updateMountNode}, ${destroy}, ${create_each_block}, "${mountOrIntro}", ${anchor}, ${this.get_each_context});
${this.block.hasAnimation && `for (let #i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].a();`}
@ -449,7 +449,7 @@ export default class EachBlock extends Node {
if (this.block.hasOutros) {
destroy = deindent`
@transitionManager.groupOutros();
@groupOutros();
for (; #i < ${iterations}.length; #i += 1) ${outroBlock}(#i, 1);
`;
} else {

@ -301,7 +301,7 @@ export default class IfBlock extends Node {
const updateMountNode = this.getUpdateMountNode(anchor);
const destroyOldBlock = deindent`
@transitionManager.groupOutros();
@groupOutros();
${name}.o(function() {
${if_blocks}[${previous_block_index}].d(1);
${if_blocks}[${previous_block_index}] = null;
@ -423,7 +423,7 @@ export default class IfBlock extends Node {
// as that will typically result in glitching
const exit = branch.hasOutroMethod
? deindent`
@transitionManager.groupOutros();
@groupOutros();
${name}.o(function() {
${name}.d(1);
${name} = null;

@ -27,7 +27,7 @@ fs.readdirSync(__dirname).forEach(file => {
? declaration.declarations[0].init
: declaration;
declarations[name] = source.slice(value.start, value.end);
declarations[name] = value ? source.slice(value.start, value.end) : 'null';
});
});

@ -1,5 +1,5 @@
import { assign, isPromise } from './utils.js';
import { transitionManager } from './transitions.js';
import { groupOutros } from './transitions.js';
export function handlePromise(promise, info) {
var token = info.token = {};
@ -16,7 +16,7 @@ export function handlePromise(promise, info) {
if (info.blocks) {
info.blocks.forEach((block, i) => {
if (i !== index && block) {
transitionManager.groupOutros();
groupOutros();
block.o(() => {
block.d(1);
info.blocks[i] = null;

@ -72,8 +72,8 @@ export function wrapTransition(component, node, fn, params, intro) {
}
if (!b) {
program.group = transitionManager.outros;
transitionManager.outros.remaining += 1;
program.group = outros;
outros.remaining += 1;
}
if (obj.delay) {
@ -165,6 +165,16 @@ export function wrapTransition(component, node, fn, params, intro) {
};
}
export let outros = {
remaining: 0,
callbacks: []
};
export function groupOutros() {
outros.remaining = 0;
outros.callbacks = [];
}
export var transitionManager = {
running: false,
transitions: [],
@ -236,13 +246,6 @@ export var transitionManager = {
.join(', ');
},
groupOutros() {
this.outros = {
remaining: 0,
callbacks: []
};
},
wait() {
if (!transitionManager.promise) {
transitionManager.promise = Promise.resolve();

@ -125,13 +125,6 @@ var transitionManager = {
.join(', ');
},
groupOutros() {
this.outros = {
remaining: 0,
callbacks: []
};
},
wait() {
if (!transitionManager.promise) {
transitionManager.promise = Promise.resolve();

Loading…
Cancel
Save