diff --git a/src/generators/dom/index.js b/src/generators/dom/index.js index 95d47e06fa..cb53883f66 100644 --- a/src/generators/dom/index.js +++ b/src/generators/dom/index.js @@ -129,35 +129,17 @@ export default function dom ( parsed, source, options ) { builders.main.addBlock( block.render() ); }); - builders.init.addLine( `this._torndown = false;` ); - - if ( parsed.css && options.css !== false ) { - builders.init.addLine( `if ( !document.getElementById( ${JSON.stringify( generator.cssId + '-style' )} ) ) ${generator.alias( 'add_css' )}();` ); - } - - if ( generator.hasComponents || generator.hasIntroTransitions ) { - builders.init.addLine( `this._renderHooks = [];` ); - } - - if ( generator.hasComplexBindings ) { - builders.init.addBlock( deindent` - this._bindings = []; - this._fragment = ${generator.alias( 'create_main_fragment' )}( this._state, this ); - if ( options.target ) this._fragment.mount( options.target, null ); - while ( this._bindings.length ) this._bindings.pop()(); - ` ); - } else { - builders.init.addBlock( deindent` - this._fragment = ${generator.alias( 'create_main_fragment' )}( this._state, this ); - if ( options.target ) this._fragment.mount( options.target, null ); - ` ); - } - - if ( generator.hasComponents || generator.hasIntroTransitions ) { - const statement = `this._flush();`; - - builders.init.addBlock( statement ); - } + builders.init.addBlock( deindent` + this._torndown = false; + ${parsed.css && options.css !== false && `if ( !document.getElementById( ${JSON.stringify( generator.cssId + '-style' )} ) ) ${generator.alias( 'add_css' )}();`} + ${( generator.hasComponents || generator.hasIntroTransitions ) && `this._renderHooks = [];`} + ${generator.hasComplexBindings && `this._bindings = [];`} + + this._fragment = ${generator.alias( 'create_main_fragment' )}( this._state, this ); + if ( options.target ) this._fragment.mount( options.target, null ); + ${generator.hasComplexBindings && `while ( this._bindings.length ) this._bindings.pop()();`} + ${( generator.hasComponents || generator.hasIntroTransitions ) && `this._flush();`} + ` ); if ( templateProperties.oncreate ) { builders.init.addBlock( deindent` @@ -218,12 +200,6 @@ export default function dom ( parsed, source, options ) { ${builders.init} ` ); - builders.main.addBlock( deindent` - function ${name} ( options ) { - ${constructorBlock} - } - ` ); - const sharedPath = options.shared === true ? 'svelte/shared.js' : options.shared; const prototypeBase = `${name}.prototype` + ( templateProperties.methods ? `, ${generator.alias( 'template' )}.methods` : '' ); @@ -236,10 +212,14 @@ export default function dom ( parsed, source, options ) { } }`; - builders.main.addBlock( `${generator.helper( 'assign' )}( ${prototypeBase}, ${proto});` ); - // TODO deprecate component.teardown() builders.main.addBlock( deindent` + function ${name} ( options ) { + ${constructorBlock} + } + + ${generator.helper( 'assign' )}( ${prototypeBase}, ${proto}); + ${name}.prototype._set = function _set ( newState ) { ${builders._set} };