/
app.js
40 lines (33 loc) · 1.01 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var AppView = require('./view')
var TodosModel = require('./model')
var RenderLoop = require('./lib/render-loop')
var S = require('pull-stream')
var css = require('sheetify')
var Model = require('pull-stream-model')
var router = require('pull-routes')()
var Many = require('pull-many')
css('todomvc-common/base.css')
css('todomvc-app-css/index.css')
var todosModel = Model(TodosModel)
var routes = router([
['/:filter?', function (params) {
if (!params.filter) return todosModel.msg.changeFilter('all')
return todosModel.msg.changeFilter(params.filter)
}]
])
var root = document.createElement('div')
document.body.appendChild(root)
var viewStream = RenderLoop(root, AppView)
var source = Many([
S( routes, S.map(match => match.fn(match.params)) ),
viewStream.source
])
S(
source,
todosModel.effects(),
S.through(console.log.bind(console, 'event')),
todosModel.store,
S.through(console.log.bind(console, 'state')),
viewStream.sink
)
viewStream.source.push(['fetch', null])