add shared prototype

pull/378/head
Rich Harris 9 years ago
parent 06f89d1d96
commit 6a4c3e46b3

@ -363,20 +363,20 @@ export default function dom ( parsed, source, options, names ) {
} }
` ); ` );
if ( templateProperties.methods ) {
builders.main.addBlock( `${name}.prototype = template.methods;` );
}
const sharedPath = options.shared === true ? 'svelte/shared.js' : options.shared; const sharedPath = options.shared === true ? 'svelte/shared.js' : options.shared;
[ 'get', 'fire', 'observe', 'on', 'set', '_flush' ].forEach( methodName => { if ( sharedPath ) {
if ( sharedPath ) { const base = templateProperties.methods ? `{}, template.methods` : `{}`;
builders.main.addLine( `${name}.prototype.${methodName} = ${generator.helper( methodName )};` ); builders.main.addBlock( `${name}.prototype = Object.assign( ${base}, ${generator.helper( 'proto' )} );` );
} else { } else {
const fn = shared[ options.dev && `${methodName}Dev` in shared ? `${methodName}Dev` : methodName ]; // eslint-disable-line import/namespace if ( templateProperties.methods ) {
builders.main.addLine( `${name}.prototype.${methodName} = ${fn};` ); builders.main.addBlock( `${name}.prototype = template.methods;` );
} }
});
[ 'get', 'fire', 'observe', 'on', 'set', '_flush' ].forEach( methodName => {
builders.main.addLine( `${name}.prototype.${methodName} = ${generator.helper( methodName )};` );
});
}
// TODO deprecate component.teardown() // TODO deprecate component.teardown()
builders.main.addBlock( deindent` builders.main.addBlock( deindent`
@ -415,4 +415,4 @@ export default function dom ( parsed, source, options, names ) {
} }
return generator.generate( builders.main.toString(), options, { name, format } ); return generator.generate( builders.main.toString(), options, { name, format } );
} }

@ -101,3 +101,21 @@ export function _flush () {
hook.fn.call( hook.context ); hook.fn.call( hook.context );
} }
} }
export var proto = {
get: get,
fire: fire,
observe: observe,
on: on,
set: set,
_flush: _flush
};
export var protoDev = {
get: get,
fire: fire,
observe: observeDev,
on: onDev,
set: set,
_flush: _flush
};
Loading…
Cancel
Save