pull/1864/head
Rich Harris 7 years ago
parent fc89c0f95e
commit e0faadbf26

@ -162,7 +162,10 @@ export default class Block {
) { ) {
this.addVariable(name); this.addVariable(name);
this.builders.create.addLine(`${name} = ${renderStatement};`); this.builders.create.addLine(`${name} = ${renderStatement};`);
this.builders.claim.addLine(`${name} = ${claimStatement || renderStatement};`);
if (this.renderer.options.hydratable) {
this.builders.claim.addLine(`${name} = ${claimStatement || renderStatement};`);
}
if (parentNode) { if (parentNode) {
this.builders.mount.addLine(`@append(${parentNode}, ${name});`); this.builders.mount.addLine(`@append(${parentNode}, ${name});`);
@ -259,14 +262,14 @@ export default class Block {
`); `);
} }
if (this.renderer.options.hydratable) { if (this.renderer.options.hydratable || !this.builders.claim.isEmpty()) {
if (this.builders.claim.isEmpty() && this.builders.hydrate.isEmpty()) { if (this.builders.claim.isEmpty() && this.builders.hydrate.isEmpty()) {
properties.addBlock(`l: @noop,`); properties.addBlock(`l: @noop,`);
} else { } else {
properties.addBlock(deindent` properties.addBlock(deindent`
${dev ? 'l: function claim' : 'l'}(nodes) { ${dev ? 'l: function claim' : 'l'}(nodes) {
${this.builders.claim} ${this.builders.claim}
${!this.builders.hydrate.isEmpty() && `this.h();`} ${this.renderer.options.hydratable && !this.builders.hydrate.isEmpty() && `this.h();`}
}, },
`); `);
} }

@ -160,7 +160,7 @@ export default class AwaitBlockWrapper extends Wrapper {
${info}.block.c(); ${info}.block.c();
`); `);
if (parentNodes) { if (parentNodes && this.renderer.options.hydratable) {
block.builders.claim.addBlock(deindent` block.builders.claim.addBlock(deindent`
${info}.block.l(${parentNodes}); ${info}.block.l(${parentNodes});
`); `);

@ -316,7 +316,7 @@ export default class EachBlockWrapper extends Wrapper {
for (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].c(); for (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].c();
`); `);
if (parentNodes) { if (parentNodes && this.renderer.options.hydratable) {
block.builders.claim.addBlock(deindent` block.builders.claim.addBlock(deindent`
for (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].l(${parentNodes}); for (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].l(${parentNodes});
`); `);
@ -389,7 +389,7 @@ export default class EachBlockWrapper extends Wrapper {
} }
`); `);
if (parentNodes) { if (parentNodes && this.renderer.options.hydratable) {
block.builders.claim.addBlock(deindent` block.builders.claim.addBlock(deindent`
for (var #i = 0; #i < ${iterations}.length; #i += 1) { for (var #i = 0; #i < ${iterations}.length; #i += 1) {
${iterations}[#i].l(${parentNodes}); ${iterations}[#i].l(${parentNodes});

@ -335,7 +335,7 @@ export default class ElementWrapper extends Wrapper {
block.builders.mount.addBlock(this.initialUpdate); block.builders.mount.addBlock(this.initialUpdate);
} }
if (nodes) { if (nodes && this.renderer.options.hydratable) {
block.builders.claim.addLine( block.builders.claim.addLine(
`${nodes}.forEach(@detachNode);` `${nodes}.forEach(@detachNode);`
); );

@ -185,7 +185,7 @@ export default class IfBlockWrapper extends Wrapper {
block.builders.create.addLine(`${if_name}${name}.c();`); block.builders.create.addLine(`${if_name}${name}.c();`);
if (parentNodes) { if (parentNodes && this.renderer.options.hydratable) {
block.builders.claim.addLine( block.builders.claim.addLine(
`${if_name}${name}.l(${parentNodes});` `${if_name}${name}.l(${parentNodes});`
); );

@ -293,7 +293,7 @@ export default class InlineComponentWrapper extends Wrapper {
`if (${name}) ${name}.$$fragment.c();` `if (${name}) ${name}.$$fragment.c();`
); );
if (parentNodes) { if (parentNodes && this.renderer.options.hydratable) {
block.builders.claim.addLine( block.builders.claim.addLine(
`if (${name}) ${name}.$$fragment.l(${parentNodes});` `if (${name}) ${name}.$$fragment.l(${parentNodes});`
); );
@ -385,7 +385,7 @@ export default class InlineComponentWrapper extends Wrapper {
block.builders.create.addLine(`${name}.$$fragment.c();`); block.builders.create.addLine(`${name}.$$fragment.c();`);
if (parentNodes) { if (parentNodes && this.renderer.options.hydratable) {
block.builders.claim.addLine( block.builders.claim.addLine(
`${name}.$$fragment.l(${parentNodes});` `${name}.$$fragment.l(${parentNodes});`
); );

@ -38,7 +38,7 @@ export class $$Component {
if (options.target) { if (options.target) {
intro.enabled = !!options.intro; intro.enabled = !!options.intro;
this.$$mount(options.target); this.$$mount(options.target, options.anchor, options.hydrate);
flush(); flush();
intro.enabled = true; intro.enabled = true;
@ -91,9 +91,14 @@ export class $$Component {
this.$$dirty[key] = true; this.$$dirty[key] = true;
} }
$$mount(target, anchor) { $$mount(target, anchor, hydrate) {
this.$$fragment.c(); if (hydrate) {
this.$$fragment[this.$$fragment.i ? 'i' : 'm'](target, anchor); this.$$fragment.l(target.childNodes);
} else {
this.$$fragment.c();
this.$$fragment[this.$$fragment.i ? 'i' : 'm'](target, anchor);
}
this.$$.inject_refs(this.$$refs); this.$$.inject_refs(this.$$refs);
// onMount happens after the initial afterRender. Because // onMount happens after the initial afterRender. Because

Loading…
Cancel
Save