@@ -252,68 +252,64 @@ export default class Element extends Node {
252
252
253
253
if ( this . name === 'noscript' ) return ;
254
254
255
- const childState = {
256
- parentNode : this . var ,
257
- parentNodes : parentNodes && block . getUniqueName ( `${ this . var } _nodes` ) // if we're in unclaimable territory, i.e. <head>, parentNodes is null
258
- } ;
259
-
260
- const name = this . var ;
255
+ const node = this . var ;
256
+ const nodes = parentNodes && block . getUniqueName ( `${ this . var } _nodes` ) // if we're in unclaimable territory, i.e. <head>, parentNodes is null
261
257
262
258
const slot = this . attributes . find ( ( attribute : Node ) => attribute . name === 'slot' ) ;
263
259
const prop = slot && quotePropIfNecessary ( slot . chunks [ 0 ] . data ) ;
264
260
const initialMountNode = this . slotted ?
265
261
`${ this . findNearest ( / ^ C o m p o n e n t / ) . var } ._slotted${ prop } ` : // TODO this looks bonkers
266
262
parentNode ;
267
263
268
- block . addVariable ( name ) ;
264
+ block . addVariable ( node ) ;
269
265
const renderStatement = getRenderStatement ( this . namespace , this . name ) ;
270
266
block . builders . create . addLine (
271
- `${ name } = ${ renderStatement } ;`
267
+ `${ node } = ${ renderStatement } ;`
272
268
) ;
273
269
274
270
if ( this . compiler . options . hydratable ) {
275
271
if ( parentNodes ) {
276
272
block . builders . claim . addBlock ( deindent `
277
- ${ name } = ${ getClaimStatement ( compiler , this . namespace , parentNodes , this ) } ;
278
- var ${ childState . parentNodes } = @children(${ name } );
273
+ ${ node } = ${ getClaimStatement ( compiler , this . namespace , parentNodes , this ) } ;
274
+ var ${ nodes } = @children(${ this . name === 'template' ? ` ${ node } .content` : node } );
279
275
` ) ;
280
276
} else {
281
277
block . builders . claim . addLine (
282
- `${ name } = ${ renderStatement } ;`
278
+ `${ node } = ${ renderStatement } ;`
283
279
) ;
284
280
}
285
281
}
286
282
287
283
if ( initialMountNode ) {
288
284
block . builders . mount . addLine (
289
- `@appendNode(${ name } , ${ initialMountNode } );`
285
+ `@appendNode(${ node } , ${ initialMountNode } );`
290
286
) ;
291
287
292
288
if ( initialMountNode === 'document.head' ) {
293
- block . builders . destroy . addLine ( `@detachNode(${ name } );` ) ;
289
+ block . builders . destroy . addLine ( `@detachNode(${ node } );` ) ;
294
290
}
295
291
} else {
296
- block . builders . mount . addLine ( `@insertNode(${ name } , #target, anchor);` ) ;
292
+ block . builders . mount . addLine ( `@insertNode(${ node } , #target, anchor);` ) ;
297
293
298
294
// TODO we eventually need to consider what happens to elements
299
295
// that belong to the same outgroup as an outroing element...
300
- block . builders . destroy . addConditional ( 'detach' , `@detachNode(${ name } );` ) ;
296
+ block . builders . destroy . addConditional ( 'detach' , `@detachNode(${ node } );` ) ;
301
297
}
302
298
303
299
// insert static children with textContent or innerHTML
304
300
if ( ! this . namespace && this . canUseInnerHTML && this . children . length > 0 ) {
305
301
if ( this . children . length === 1 && this . children [ 0 ] . type === 'Text' ) {
306
302
block . builders . create . addLine (
307
- `${ name } .textContent = ${ stringify ( this . children [ 0 ] . data ) } ;`
303
+ `${ node } .textContent = ${ stringify ( this . children [ 0 ] . data ) } ;`
308
304
) ;
309
305
} else {
310
306
block . builders . create . addLine (
311
- `${ name } .innerHTML = ${ stringify ( this . children . map ( toHTML ) . join ( '' ) ) } ;`
307
+ `${ node } .innerHTML = ${ stringify ( this . children . map ( toHTML ) . join ( '' ) ) } ;`
312
308
) ;
313
309
}
314
310
} else {
315
311
this . children . forEach ( ( child : Node ) => {
316
- child . build ( block , childState . parentNode , childState . parentNodes ) ;
312
+ child . build ( block , this . name === 'template' ? ` ${ node } .content` : node , nodes ) ;
317
313
} ) ;
318
314
}
319
315
@@ -342,12 +338,12 @@ export default class Element extends Node {
342
338
343
339
if ( eventHandlerOrBindingUsesContext ) {
344
340
initialProps . push ( `ctx` ) ;
345
- block . builders . update . addLine ( `${ name } ._svelte.ctx = ctx;` ) ;
341
+ block . builders . update . addLine ( `${ node } ._svelte.ctx = ctx;` ) ;
346
342
}
347
343
348
344
if ( initialProps . length ) {
349
345
block . builders . hydrate . addBlock ( deindent `
350
- ${ name } ._svelte = { ${ initialProps . join ( ', ' ) } };
346
+ ${ node } ._svelte = { ${ initialProps . join ( ', ' ) } };
351
347
` ) ;
352
348
}
353
349
} else {
@@ -368,9 +364,9 @@ export default class Element extends Node {
368
364
block . builders . mount . addBlock ( this . initialUpdate ) ;
369
365
}
370
366
371
- if ( childState . parentNodes ) {
367
+ if ( nodes ) {
372
368
block . builders . claim . addLine (
373
- `${ childState . parentNodes } .forEach(@detachNode);`
369
+ `${ nodes } .forEach(@detachNode);`
374
370
) ;
375
371
}
376
372
0 commit comments