remove redundant localElementDepth

pull/453/head
Rich-Harris 9 years ago
parent 421f3d698f
commit a9fb93eb32

@ -3,8 +3,8 @@ export default class Fragment {
Object.assign( this, options );
}
addElement ( name, renderStatement, target, localElementDepth, needsIdentifier = false ) {
const isToplevel = localElementDepth === 0;
addElement ( name, renderStatement, target, needsIdentifier = false ) {
const isToplevel = !target;
if ( needsIdentifier || isToplevel ) {
this.builders.create.addLine(
`var ${name} = ${renderStatement};`
@ -24,16 +24,16 @@ export default class Fragment {
return new Fragment( Object.assign( {}, this, options, { parent: this } ) );
}
createAnchor ( name, target, localElementDepth ) {
createAnchor ( name, target ) {
const renderStatement = `${this.generator.helper( 'createComment' )}()`;
this.addElement( name, renderStatement, target, localElementDepth, true );
this.addElement( name, renderStatement, target, true );
}
createMountStatement ( name, target ) {
if ( target === 'target' ) {
this.builders.mount.addLine( `${this.generator.helper( 'insertNode' )}( ${name}, target, anchor );` );
} else {
if ( target ) {
this.builders.create.addLine( `${this.generator.helper( 'appendNode' )}( ${name}, ${target} );` );
} else {
this.builders.mount.addLine( `${this.generator.helper( 'insertNode' )}( ${name}, target, anchor );` );
}
}
}

@ -129,8 +129,7 @@ export default function dom ( parsed, source, options ) {
const state = {
namespace,
target: 'target',
localElementDepth: 0
target: null
};
parsed.html.children.forEach( node => {

@ -35,7 +35,7 @@ export default function visitComponent ( generator, fragment, state, node ) {
update: new CodeBuilder()
};
const isToplevel = state.localElementDepth === 0;
const isToplevel = !state.target;
generator.hasComponents = true;
@ -85,8 +85,7 @@ export default function visitComponent ( generator, fragment, state, node ) {
});
const childState = Object.assign( {}, state, {
target: 'target',
localElementDepth: 0
target: null
});
node.children.forEach( child => {

@ -13,14 +13,14 @@ export default function visitEachBlock ( generator, fragment, state, node ) {
const listName = fragment.getUniqueName( `${name}_value` );
const isToplevel = state.localElementDepth === 0;
const isToplevel = !state.target;
generator.addSourcemapLocations( node.expression );
const { dependencies, snippet } = generator.contextualise( fragment, node.expression );
const anchor = fragment.getUniqueName( `${name}_anchor` );
fragment.createAnchor( anchor, state.target, state.localElementDepth );
fragment.createAnchor( anchor, state.target );
const localVars = {};
@ -210,8 +210,7 @@ export default function visitEachBlock ( generator, fragment, state, node ) {
});
const childState = Object.assign( {}, state, {
target: 'target',
localElementDepth: 0
target: null
});
node.children.forEach( child => {

@ -32,7 +32,7 @@ export default function visitElement ( generator, fragment, state, node ) {
destroy: new CodeBuilder()
};
const isToplevel = state.localElementDepth === 0;
const isToplevel = !state.target;
addElementAttributes( generator, fragment, node, local );
@ -100,7 +100,6 @@ export default function visitElement ( generator, fragment, state, node ) {
const childState = Object.assign( {}, state, {
elementDepth: state.elementDepth + 1,
localElementDepth: state.localElementDepth + 1,
target: name,
namespace: local.namespace
});

@ -40,8 +40,7 @@ function generateBlock ( generator, fragment, state, node, name, type ) {
});
const childState = Object.assign( {}, state, {
target: 'target',
localElementDepth: 0
target: null
});
// walk the children here
@ -59,11 +58,11 @@ export default function visitIfBlock ( generator, fragment, state, node ) {
const currentBlock = fragment.getUniqueName( `current_block` );
const _currentBlock = fragment.getUniqueName( `_current_block` );
const isToplevel = state.localElementDepth === 0;
const isToplevel = !state.target;
const conditionsAndBlocks = getConditionsAndBlocks( generator, fragment, state, node, generator.getUniqueName( `render_if_block` ) );
const anchor = `${name}_anchor`;
fragment.createAnchor( anchor, state.target, state.localElementDepth );
fragment.createAnchor( anchor, state.target );
fragment.builders.create.addBlock( deindent`
function ${getBlock} ( ${params} ) {

@ -7,7 +7,7 @@ export default function visitMustacheTag ( generator, fragment, state, node ) {
const { snippet } = generator.contextualise( fragment, node.expression );
fragment.builders.create.addLine( `var last_${name} = ${snippet};` );
fragment.addElement( name, `${generator.helper( 'createText' )}( last_${name} )`, state.target, state.localElementDepth, true );
fragment.addElement( name, `${generator.helper( 'createText' )}( last_${name} )`, state.target, true );
// TODO this should be unnecessary once we separate fragments from state
const parentFragment = findBlock( fragment );

@ -9,12 +9,12 @@ export default function visitRawMustacheTag ( generator, fragment, state, node )
// we would have used comments here, but the `insertAdjacentHTML` api only
// exists for `Element`s.
const before = `${name}_before`;
fragment.addElement( before, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, state.localElementDepth, true );
fragment.addElement( before, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, true );
const after = `${name}_after`;
fragment.addElement( after, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, state.localElementDepth, true );
fragment.addElement( after, `${generator.helper( 'createElement' )}( 'noscript' )`, state.target, true );
const isToplevel = state.localElementDepth === 0;
const isToplevel = !state.target;
fragment.builders.create.addLine( `var last_${name} = ${snippet};` );
const mountStatement = `${before}.insertAdjacentHTML( 'afterend', last_${name} );`;

@ -4,5 +4,5 @@ export default function visitText ( generator, fragment, state, node ) {
}
const name = fragment.getUniqueName( `text` );
fragment.addElement( name, `${generator.helper( 'createText' )}( ${JSON.stringify( node.data )} )`, state.target, state.localElementDepth, false );
fragment.addElement( name, `${generator.helper( 'createText' )}( ${JSON.stringify( node.data )} )`, state.target, false );
}

@ -1,9 +1,9 @@
export default function visitYieldTag ( generator, fragment, state ) {
const anchor = `yield_anchor`;
fragment.createAnchor( anchor, state.target, state.localElementDepth );
fragment.createAnchor( anchor, state.target );
fragment.builders.mount.addLine(
`${fragment.component}._yield && ${fragment.component}._yield.mount( ${state.target}, ${anchor} );`
`${fragment.component}._yield && ${fragment.component}._yield.mount( ${state.target || 'target'}, ${anchor} );`
);
fragment.builders.destroy.addLine(

Loading…
Cancel
Save