Merge pull request #755 from sveltejs/gh-744

handle set after destroy, and move destroy into shared helpers
pull/754/merge
Rich Harris 7 years ago committed by GitHub
commit 8b9380fb24

@ -174,8 +174,8 @@ export default function dom(
? `@proto `
: deindent`
{
${['get', 'fire', 'observe', 'on', 'set']
.map(n => `${n}: @${n}`)
${['destroy', 'get', 'fire', 'observe', 'on', 'set', 'teardown']
.map(n => `${n}: @${n === 'teardown' ? 'destroy' : n}`)
.join(',\n')}
}`;
@ -207,11 +207,11 @@ export default function dom(
};
this._handlers = Object.create( null );
${templateProperties.ondestroy && `this._handlers.destroy = [@template.ondestroy]`}
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
${generator.stylesheet.hasStyles &&
options.css !== false &&
`if ( !document.getElementById( '${generator.stylesheet.id}-style' ) ) @add_css();`}
@ -263,19 +263,6 @@ export default function dom(
${_set}
};
${name}.prototype.teardown = ${name}.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return${options.dev && ` console.warn( 'Component was already destroyed' )`};
this.fire( 'destroy' );
${templateProperties.ondestroy && `@template.ondestroy.call( this );`}
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
${templateProperties.setup && `@template.setup( ${name} );`}
`);

@ -1,8 +1,27 @@
import { assign } from './utils.js';
import { noop } from './utils.js';
export * from './dom.js';
export * from './transitions.js';
export * from './utils.js';
export function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
export function destroyDev(detach) {
destroy.call(this, detach);
this.destroy = function() {
console.warn('Component was already destroyed');
};
}
export function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -119,17 +138,21 @@ export function callAll(fns) {
}
export var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
export var protoDev = {
destroy: destroyDev,
get: get,
fire: fire,
observe: observeDev,
on: onDev,
set: set
set: set,
teardown: destroyDev
};

@ -37,6 +37,17 @@ function setAttribute(node, attribute, value) {
node.setAttribute(attribute, value);
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -128,11 +139,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
var template = (function () {
@ -201,7 +214,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
if ( !document.getElementById( 'svelte-3590263702-style' ) ) add_css();
this._fragment = create_main_fragment( this._state, this );
@ -222,16 +234,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -66,7 +66,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
if ( !document.getElementById( 'svelte-3590263702-style' ) ) add_css();
this._fragment = create_main_fragment( this._state, this );
@ -87,16 +86,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -13,6 +13,17 @@ function assign(target) {
return target;
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -104,11 +115,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
function recompute ( state, newState, oldState, isInitial ) {
@ -155,8 +168,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -175,16 +186,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -44,8 +44,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -64,16 +62,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -33,6 +33,17 @@ function setAttribute(node, attribute, value) {
node.setAttribute(attribute, value);
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -124,11 +135,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
function encapsulateStyles ( node ) {
@ -181,7 +194,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
if ( !document.getElementById( 'svelte-2363328337-style' ) ) add_css();
this._fragment = create_main_fragment( this._state, this );
@ -201,16 +213,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -50,7 +50,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
if ( !document.getElementById( 'svelte-2363328337-style' ) ) add_css();
this._fragment = create_main_fragment( this._state, this );
@ -70,16 +69,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -46,6 +46,17 @@ function createText(data) {
return document.createTextNode(data);
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -137,11 +148,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
function create_main_fragment ( state, component ) {
@ -301,8 +314,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -321,16 +332,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -157,8 +157,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -177,16 +175,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -1,3 +1,5 @@
function noop() {}
function assign(target) {
var k,
source,
@ -31,6 +33,17 @@ function createText(data) {
return document.createTextNode(data);
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -122,11 +135,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
var template = (function () {
@ -190,8 +205,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -209,16 +222,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -61,8 +61,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -80,16 +78,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -37,6 +37,17 @@ function createComment() {
return document.createComment('');
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -128,11 +139,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
function create_main_fragment ( state, component ) {
@ -236,8 +249,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -256,16 +267,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -101,8 +101,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -121,16 +119,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -37,6 +37,17 @@ function createComment() {
return document.createComment('');
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -128,11 +139,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
function create_main_fragment ( state, component ) {
@ -212,8 +225,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -232,16 +243,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -77,8 +77,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -97,16 +95,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -1,5 +1,7 @@
import Imported from 'Imported.html';
function noop() {}
function assign(target) {
var k,
source,
@ -25,6 +27,17 @@ function createText(data) {
return document.createTextNode(data);
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -116,11 +129,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
var template = (function () {
@ -182,8 +197,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
if ( !options._root ) {
this._oncreate = [];
this._beforecreate = [];
@ -215,16 +228,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -61,8 +61,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
if ( !options._root ) {
this._oncreate = [];
this._beforecreate = [];
@ -94,16 +92,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -13,6 +13,17 @@ function assign(target) {
return target;
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -104,11 +115,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
var template = (function () {
@ -142,12 +155,11 @@ function SvelteComponent ( options ) {
};
this._handlers = Object.create( null );
this._handlers.destroy = [template.ondestroy];
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
var oncreate = template.oncreate.bind( this );
if ( !options._root ) {
@ -177,17 +189,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
template.ondestroy.call( this );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -31,12 +31,11 @@ function SvelteComponent ( options ) {
};
this._handlers = Object.create( null );
this._handlers.destroy = [template.ondestroy]
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
var oncreate = template.oncreate.bind( this );
if ( !options._root ) {
@ -66,17 +65,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
template.ondestroy.call( this );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -13,6 +13,17 @@ function assign(target) {
return target;
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -104,11 +115,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
var template = (function () {
@ -157,8 +170,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -176,18 +187,6 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
template.setup( SvelteComponent );
export default SvelteComponent;

@ -46,8 +46,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -65,18 +63,6 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
template.setup( SvelteComponent );
export default SvelteComponent;
export default SvelteComponent;

@ -37,6 +37,17 @@ function createComment() {
return document.createComment('');
}
function destroy(detach) {
this.destroy = this.set = noop;
this.fire('destroy');
if (detach !== false) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
}
function differs(a, b) {
return a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
@ -128,11 +139,13 @@ function callAll(fns) {
}
var proto = {
destroy: destroy,
get: get,
fire: fire,
observe: observe,
on: on,
set: set
set: set,
teardown: destroy
};
function create_main_fragment ( state, component ) {
@ -396,8 +409,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -416,16 +427,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -261,8 +261,6 @@ function SvelteComponent ( options ) {
this._root = options._root || this;
this._yield = options._yield;
this._destroyed = false;
this._fragment = create_main_fragment( this._state, this );
if ( options.target ) {
@ -281,16 +279,4 @@ SvelteComponent.prototype._set = function _set ( newState ) {
dispatchObservers( this, this._observers.post, newState, oldState );
};
SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = function destroy ( detach ) {
if ( this._destroyed ) return;
this.fire( 'destroy' );
if ( detach !== false ) this._fragment.unmount();
this._fragment.destroy();
this._fragment = null;
this._state = {};
this._destroyed = true;
};
export default SvelteComponent;

@ -1,7 +1,7 @@
export default {
test ( assert, component ) {
assert.deepEqual( component.events, [ 'render' ]);
test(assert, component) {
assert.deepEqual(component.events, ['create']);
component.destroy();
assert.deepEqual( component.events, [ 'render', 'teardown' ]);
assert.deepEqual(component.events, ['create', 'destroy']);
}
};

@ -2,12 +2,12 @@
<script>
export default {
oncreate () {
this.events = [ 'render' ];
oncreate() {
this.events = ['create'];
},
ondestroy () {
this.events.push( 'teardown' );
ondestroy() {
this.events.push('destroy');
}
};
</script>
</script>

@ -0,0 +1,10 @@
export default {
data: {
x: 1
},
test(assert, component) {
component.destroy();
component.set({ x: 2 });
}
};
Loading…
Cancel
Save