From 578a2bca087b82962b3effb90dfd686f8e83a747 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 2 Dec 2018 16:59:35 -0500 Subject: [PATCH] inject props --- src/compile/Component.ts | 4 ++++ src/internal/Component.js | 12 ++++++------ test/js/index.js | 2 +- test/server-side-rendering/index.js | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/compile/Component.ts b/src/compile/Component.ts index 36c3d3faa3..bb6c5c1c9a 100644 --- a/src/compile/Component.ts +++ b/src/compile/Component.ts @@ -133,6 +133,10 @@ export default class Component { this.meta = process_meta(this, this.ast.html.children); this.namespace = namespaces[this.meta.namespace] || this.meta.namespace; + if (this.meta.props) { + this.has_reactive_assignments = true; + } + if (options.customElement === true && !this.meta.tag) { throw new Error(`No tag name specified`); // TODO better error } diff --git a/src/internal/Component.js b/src/internal/Component.js index d18dcf2093..508304b7db 100644 --- a/src/internal/Component.js +++ b/src/internal/Component.js @@ -60,6 +60,10 @@ function make_dirty(component, key) { component.$$.dirty[key] = true; } +function empty() { + return {}; +} + export function init(component, options, define, create_fragment, not_equal) { const previous_component = current_component; set_current_component(component); @@ -68,7 +72,7 @@ export function init(component, options, define, create_fragment, not_equal) { fragment: null, // state - get: null, + get: empty, set: noop, inject_refs: noop, not_equal, @@ -88,15 +92,11 @@ export function init(component, options, define, create_fragment, not_equal) { binding_groups: [] }; - define(component, key => { + define(component, options.props || {}, key => { make_dirty(component, key); if (component.$$.bound[key]) component.$$.bound[key](component.$$.get()[key]); }); - if (options.props) { - component.$$.set(options.props); - } - run_all(component.$$.before_render); component.$$.fragment = create_fragment(component, component.$$.get()); diff --git a/test/js/index.js b/test/js/index.js index 71416d8cf3..3ee1a1da2d 100644 --- a/test/js/index.js +++ b/test/js/index.js @@ -3,7 +3,7 @@ import * as fs from "fs"; import * as path from "path"; import { loadConfig, svelte } from "../helpers.js"; -describe.only("js", () => { +describe("js", () => { fs.readdirSync("test/js/samples").forEach(dir => { if (dir[0] === ".") return; diff --git a/test/server-side-rendering/index.js b/test/server-side-rendering/index.js index de57f49090..a8d68aeaca 100644 --- a/test/server-side-rendering/index.js +++ b/test/server-side-rendering/index.js @@ -21,7 +21,7 @@ function tryToReadFile(file) { const sveltePath = process.cwd(); -describe("ssr", () => { +describe.only("ssr", () => { before(() => { require("../../register")({ extensions: ['.svelte', '.html'],