|
|
|
@ -140,6 +140,8 @@ export default class Block {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
toString() {
|
|
|
|
|
const { dev } = this.compiler.options;
|
|
|
|
|
|
|
|
|
|
let introing;
|
|
|
|
|
const hasIntros = !this.builders.intro.isEmpty();
|
|
|
|
|
if (hasIntros) {
|
|
|
|
@ -177,10 +179,16 @@ export default class Block {
|
|
|
|
|
if (this.builders.create.isEmpty() && this.builders.hydrate.isEmpty()) {
|
|
|
|
|
properties.addBlock(`c: @noop,`);
|
|
|
|
|
} else {
|
|
|
|
|
const hydrate = !this.builders.hydrate.isEmpty() && (
|
|
|
|
|
this.compiler.options.hydratable
|
|
|
|
|
? `this.h()`
|
|
|
|
|
: this.builders.hydrate
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
c: function create() {
|
|
|
|
|
${dev ? 'c: function create' : 'c'}() {
|
|
|
|
|
${this.builders.create}
|
|
|
|
|
${!this.builders.hydrate.isEmpty() && `this.h();`}
|
|
|
|
|
${hydrate}
|
|
|
|
|
},
|
|
|
|
|
`);
|
|
|
|
|
}
|
|
|
|
@ -190,7 +198,7 @@ export default class Block {
|
|
|
|
|
properties.addBlock(`l: @noop,`);
|
|
|
|
|
} else {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
l: function claim(nodes) {
|
|
|
|
|
${dev ? 'l: function claim' : 'l'}(nodes) {
|
|
|
|
|
${this.builders.claim}
|
|
|
|
|
${!this.builders.hydrate.isEmpty() && `this.h();`}
|
|
|
|
|
},
|
|
|
|
@ -198,9 +206,9 @@ export default class Block {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!this.builders.hydrate.isEmpty()) {
|
|
|
|
|
if (this.compiler.options.hydratable && !this.builders.hydrate.isEmpty()) {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
h: function hydrate() {
|
|
|
|
|
${dev ? 'h: function hydrate' : 'h'}() {
|
|
|
|
|
${this.builders.hydrate}
|
|
|
|
|
},
|
|
|
|
|
`);
|
|
|
|
@ -210,7 +218,7 @@ export default class Block {
|
|
|
|
|
properties.addBlock(`m: @noop,`);
|
|
|
|
|
} else {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
m: function mount(#target, anchor) {
|
|
|
|
|
${dev ? 'm: function mount' : 'm'}(#target, anchor) {
|
|
|
|
|
${this.builders.mount}
|
|
|
|
|
},
|
|
|
|
|
`);
|
|
|
|
@ -221,7 +229,7 @@ export default class Block {
|
|
|
|
|
properties.addBlock(`p: @noop,`);
|
|
|
|
|
} else {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
p: function update(changed, ${this.maintainContext ? '_ctx' : 'ctx'}) {
|
|
|
|
|
${dev ? 'p: function update' : 'p'}(changed, ${this.maintainContext ? '_ctx' : 'ctx'}) {
|
|
|
|
|
${this.maintainContext && `ctx = _ctx;`}
|
|
|
|
|
${this.builders.update}
|
|
|
|
|
},
|
|
|
|
@ -232,7 +240,7 @@ export default class Block {
|
|
|
|
|
if (this.hasIntroMethod) {
|
|
|
|
|
if (hasIntros) {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
i: function intro(#target, anchor) {
|
|
|
|
|
${dev ? 'i: function intro' : 'i'}(#target, anchor) {
|
|
|
|
|
if (${introing}) return;
|
|
|
|
|
${introing} = true;
|
|
|
|
|
${hasOutros && `${outroing} = false;`}
|
|
|
|
@ -244,7 +252,7 @@ export default class Block {
|
|
|
|
|
`);
|
|
|
|
|
} else {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
i: function intro(#target, anchor) {
|
|
|
|
|
${dev ? 'i: function intro' : 'i'}(#target, anchor) {
|
|
|
|
|
this.m(#target, anchor);
|
|
|
|
|
},
|
|
|
|
|
`);
|
|
|
|
@ -254,7 +262,7 @@ export default class Block {
|
|
|
|
|
if (this.hasOutroMethod) {
|
|
|
|
|
if (hasOutros) {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
o: function outro(#outrocallback) {
|
|
|
|
|
${dev ? 'o: function outro' : 'o'}(#outrocallback) {
|
|
|
|
|
if (${outroing}) return;
|
|
|
|
|
${outroing} = true;
|
|
|
|
|
${hasIntros && `${introing} = false;`}
|
|
|
|
@ -275,7 +283,7 @@ export default class Block {
|
|
|
|
|
properties.addBlock(`u: @noop,`);
|
|
|
|
|
} else {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
u: function unmount() {
|
|
|
|
|
${dev ? 'u: function unmount' : 'u'}() {
|
|
|
|
|
${this.builders.unmount}
|
|
|
|
|
},
|
|
|
|
|
`);
|
|
|
|
@ -285,7 +293,7 @@ export default class Block {
|
|
|
|
|
properties.addBlock(`d: @noop`);
|
|
|
|
|
} else {
|
|
|
|
|
properties.addBlock(deindent`
|
|
|
|
|
d: function destroy() {
|
|
|
|
|
${dev ? 'd: function destroy' : 'd'}() {
|
|
|
|
|
${this.builders.destroy}
|
|
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|