Merge pull request #125 from mrkishi/detach

Improve teardown code
pull/131/head
Arpad Borsos 8 years ago committed by GitHub
commit 108f741092

@ -57,6 +57,19 @@ export default function generate ( parsed, source, options ) {
fragment.initStatements.push( `${fragment.autofocus}.focus();` ); fragment.initStatements.push( `${fragment.autofocus}.focus();` );
} }
const detachStatements = fragment.detachStatements.join( '\n\n' );
const teardownStatements = fragment.teardownStatements.join( '\n\n' );
const detachBlock = deindent`
if ( detach ) {
${detachStatements}
}
`;
const teardownBlock = deindent`
${teardownStatements}${detachStatements ? `\n\n${detachBlock}` : ``}
`;
renderers.push( deindent` renderers.push( deindent`
function ${fragment.name} ( ${fragment.params}, component ) { function ${fragment.name} ( ${fragment.params}, component ) {
${fragment.initStatements.join( '\n\n' )} ${fragment.initStatements.join( '\n\n' )}
@ -71,11 +84,7 @@ export default function generate ( parsed, source, options ) {
}, },
teardown: function ( detach ) { teardown: function ( detach ) {
${fragment.teardownStatements.join( '\n\n' )} ${teardownBlock}
if ( detach ) {
${fragment.detachStatements.join( '\n\n' )}
}
} }
}; };
} }

@ -17,6 +17,7 @@ export default {
init: [], init: [],
mount: [], mount: [],
update: [], update: [],
detach: [],
teardown: [] teardown: []
}; };
@ -44,6 +45,7 @@ export default {
initStatements: [], initStatements: [],
mountStatements: [], mountStatements: [],
updateStatements: [], updateStatements: [],
detachStatements: [],
teardownStatements: [], teardownStatements: [],
counter: counter() counter: counter()
@ -123,6 +125,7 @@ export default {
generator.current.initStatements.push( local.init.join( '\n' ) ); generator.current.initStatements.push( local.init.join( '\n' ) );
if ( local.update.length ) generator.current.updateStatements.push( local.update.join( '\n' ) ); if ( local.update.length ) generator.current.updateStatements.push( local.update.join( '\n' ) );
if ( local.mount.length ) generator.current.mountStatements.push( local.mount.join( '\n' ) ); if ( local.mount.length ) generator.current.mountStatements.push( local.mount.join( '\n' ) );
if ( local.detach.length ) generator.current.detachStatements.push( local.detach.join( '\n' ) );
generator.current.teardownStatements.push( local.teardown.join( '\n' ) ); generator.current.teardownStatements.push( local.teardown.join( '\n' ) );
generator.push({ generator.push({

@ -69,7 +69,7 @@ export default {
local.init.unshift( render ); local.init.unshift( render );
if ( isToplevel ) { if ( isToplevel ) {
local.teardown.push( `if ( detach ) ${name}.parentNode.removeChild( ${name} );` ); local.detach.push( `${name}.parentNode.removeChild( ${name} );` );
} }
// special case bound <option> without a value attribute // special case bound <option> without a value attribute
@ -82,7 +82,7 @@ export default {
generator.current.initStatements.push( local.init.join( '\n' ) ); generator.current.initStatements.push( local.init.join( '\n' ) );
if ( local.update.length ) generator.current.updateStatements.push( local.update.join( '\n' ) ); if ( local.update.length ) generator.current.updateStatements.push( local.update.join( '\n' ) );
if ( local.mount.length ) generator.current.mountStatements.push( local.mount.join( '\n' ) ); if ( local.mount.length ) generator.current.mountStatements.push( local.mount.join( '\n' ) );
generator.current.detachStatements.push( local.detach.join( '\n' ) ); if ( local.detach.length ) generator.current.detachStatements.push( local.detach.join( '\n' ) );
generator.current.teardownStatements.push( local.teardown.join( '\n' ) ); generator.current.teardownStatements.push( local.teardown.join( '\n' ) );
generator.createMountStatement( name ); generator.createMountStatement( name );

Loading…
Cancel
Save