fix transitions and stuff

pull/1746/head
Rich Harris 7 years ago
parent 62101cdd1a
commit 84b5345aee

@ -158,6 +158,16 @@ export default class ElementWrapper extends Wrapper {
throw new Error(`no binding was created`); throw new Error(`no binding was created`);
} }
if (node.intro || node.outro) {
if (node.intro) block.addIntro();
if (node.outro) block.addOutro();
this.cannotUseInnerHTML();
}
if (node.animation) {
block.addAnimation();
}
this.fragment = new FragmentWrapper(renderer, block, node.children, this, stripWhitespace, nextSibling); this.fragment = new FragmentWrapper(renderer, block, node.children, this, stripWhitespace, nextSibling);
} }
@ -657,7 +667,7 @@ export default class ElementWrapper extends Wrapper {
addTransitions( addTransitions(
block: Block block: Block
) { ) {
const { intro, outro } = this; const { intro, outro } = this.node;
if (!intro && !outro) return; if (!intro && !outro) return;

@ -106,6 +106,18 @@ export default class FragmentWrapper {
} }
} }
if (stripWhitespace) {
const first = <TextWrapper>this.nodes[0];
if (first && first.node.type === 'Text') {
first.data = trimStart(first.data);
if (!first.data) {
this.nodes.shift();
link(null, this.nodes[0]);
}
}
}
if (windowWrapper) { if (windowWrapper) {
this.nodes.unshift(windowWrapper); this.nodes.unshift(windowWrapper);
link(lastChild, windowWrapper); link(lastChild, windowWrapper);

@ -161,7 +161,7 @@ export default class IfBlockWrapper extends Wrapper {
if (this.node.else) { if (this.node.else) {
if (hasOutros) { if (hasOutros) {
this.renderCompoundWithOutros(block, parentNode, parentNodes, branches, dynamic, vars); this.renderCompoundWithOutros(block, parentNode, parentNodes, dynamic, vars);
if (this.renderer.options.nestedTransitions) { if (this.renderer.options.nestedTransitions) {
block.builders.outro.addBlock(deindent` block.builders.outro.addBlock(deindent`

@ -32,6 +32,7 @@ function shouldSkip(node: Text) {
export default class TextWrapper extends Wrapper { export default class TextWrapper extends Wrapper {
node: Text; node: Text;
data: string;
skip: boolean; skip: boolean;
var: string; var: string;
@ -44,6 +45,7 @@ export default class TextWrapper extends Wrapper {
super(renderer, block, parent, node); super(renderer, block, parent, node);
this.skip = shouldSkip(this.node); this.skip = shouldSkip(this.node);
this.data = node.data;
this.var = this.skip ? null : 'text'; this.var = this.skip ? null : 'text';
} }
@ -52,8 +54,8 @@ export default class TextWrapper extends Wrapper {
block.addElement( block.addElement(
this.var, this.var,
`@createText(${stringify(this.node.data)})`, `@createText(${stringify(this.data)})`,
parentNodes && `@claimText(${parentNodes}, ${stringify(this.node.data)})`, parentNodes && `@claimText(${parentNodes}, ${stringify(this.data)})`,
parentNode parentNode
); );
} }

Loading…
Cancel
Save