Merge pull request #1021 from sveltejs/gh-1015

implement preload
pull/1028/head
Rich Harris 7 years ago committed by GitHub
commit ca6a4a7708
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -598,6 +598,10 @@ export default class Generator {
addDeclaration('ondestroy', templateProperties.ondestroy.value);
}
if (templateProperties.preload) {
addDeclaration('preload', templateProperties.preload.value);
}
if (templateProperties.props) {
this.props = templateProperties.props.value.elements.map((element: Node) => element.value);
}

@ -358,6 +358,8 @@ export default function dom(
` : (!sharedPath && `${name}.prototype._recompute = @noop;`)}
${templateProperties.setup && `%setup(${name});`}
${templateProperties.preload && `${name}.preload = %preload;`}
`);
const usedHelpers = new Set();

@ -162,6 +162,8 @@ export default function ssr(
};
};
${templateProperties.preload && `${name}.preload = %preload;`}
${
// TODO this is a bit hacky
/__escape/.test(generator.renderCode) && deindent`

@ -9,6 +9,7 @@ import methods from './methods';
import components from './components';
import events from './events';
import namespace from './namespace';
import preload from './preload';
import props from './props';
import tag from './tag';
import transitions from './transitions';
@ -26,6 +27,7 @@ export default {
components,
events,
namespace,
preload,
props,
tag,
transitions,

@ -0,0 +1,6 @@
import { Validator } from '../../';
import { Node } from '../../../interfaces';
export default function preload(validator: Validator, prop: Node) {
// not sure there's anything we need to check here...
}

@ -1,3 +1,7 @@
function preload(input) {
return output;
}
var SvelteComponent = {};
SvelteComponent.data = function() {
@ -20,4 +24,6 @@ SvelteComponent.renderCss = function() {
};
};
SvelteComponent.preload = preload;
module.exports = SvelteComponent;

@ -1,5 +1,9 @@
"use strict";
function preload(input) {
return output;
};
var SvelteComponent = {};;
SvelteComponent.data = function() {
@ -22,4 +26,6 @@ SvelteComponent.renderCss = function() {
};
};
SvelteComponent.preload = preload;
module.exports = SvelteComponent;

@ -18,6 +18,10 @@
swipe(node, callback) {
// TODO implement
}
},
preload(input) {
return output;
}
};
</script>

@ -0,0 +1,6 @@
export default {
test(assert, component) {
const Component = component.constructor;
assert.deepEqual(Component.preload({ foo: 1 }), { bar: 2 });
}
};

@ -0,0 +1,9 @@
<script>
export default {
preload({ foo }) {
return {
bar: foo * 2
};
}
};
</script>
Loading…
Cancel
Save