UNPKG

768 BJavaScriptView Raw
1import { start } from './App'
2import State from './State'
3
4const componentWithState = (component, state) => {
5 return Object.assign({}, component, {
6 init: () => state.toObject()
7 })
8}
9
10const componentToString = component => {
11 const node = start(component)
12
13 if (node.outerHTML) {
14 return node.outerHTML
15 } else {
16 return node.toString()
17 }
18}
19
20export function render (component, update) {
21 if (typeof update === 'function') {
22 return new Promise(resolve => {
23 const initialState = new State(component.init())
24
25 update(initialState, newState => {
26 const newComponent = componentWithState(component, newState)
27
28 resolve(componentToString(newComponent))
29 })
30 })
31 } else {
32 return componentToString(component)
33 }
34}