git ssb

2+

mixmix / ticktack



Tree: 7458998a2a59e0edaf11b6ce83867a72f96577d6

Files: 7458998a2a59e0edaf11b6ce83867a72f96577d6 / app / html / app.js

1539 bytesRaw
1const nest = require('depnest')
2const values = require('lodash/values')
3const insertCss = require('insert-css')
4const openExternal = require('open-external')
5
6const HyperNav = require('hyper-nav')
7const computed = require('mutant/computed')
8const h = require('mutant/h')
9
10exports.gives = nest({
11 'app.html.app': true,
12 'history.obs.location': true,
13 'history.sync.push': true,
14 'history.sync.back': true,
15})
16
17exports.needs = nest({
18 'app.async.catchLinkClick': 'first',
19// 'history.sync.push': 'first',
20// 'history.obs.location': 'first',
21// 'history.obs.store': 'first',
22 'router.sync.router': 'first',
23 'styles.css': 'first'
24})
25
26exports.create = (api) => {
27
28 var nav = HyperNav(api.router.sync.router, function (nav) {
29 return h('Header', [
30 h('h1', [
31 computed(nav.last, function (e) { return e.element.title })
32 ]),
33 h('Nav', [
34 h('div.back', { 'ev-click': nav.back }, '←'),
35 h('div', { 'ev-click': () => nav.push({page:'home'}) }, 'Home')
36 ])
37 ])
38 })
39
40 return nest({
41 'app.html.app': function app () {
42 const css = values(api.styles.css()).join('\n')
43 insertCss(css)
44
45 api.app.async.catchLinkClick(document.body, (link, { isExternal }) => {
46 if (isExternal) return openExternal(link)
47 nav.push(link)
48 })
49 nav.push({page: 'home'})
50 document.body.appendChild(nav)
51 },
52 'history.sync.push': (location) => nav.push(location),
53 'history.sync.back': () => nav.back(),
54 'history.obs.location': () => nav.history,
55 })
56}
57
58

Built with git-ssb-web