Files: dc06cb1de81eb3375ac9fa5e35df122d752f81d8 / message / html / layout / default.js
1339 bytesRaw
1 | const nest = require('depnest') |
2 | const { h, Value } = require('mutant') |
3 | const { isMsg } = require('ssb-ref') |
4 | |
5 | exports.needs = nest({ |
6 | 'message.html': { |
7 | backlinks: 'first', |
8 | author: 'first', |
9 | meta: 'map', |
10 | action: 'map', |
11 | timestamp: 'first' |
12 | }, |
13 | 'about.html.avatar': 'first' |
14 | }) |
15 | |
16 | exports.gives = nest('message.html.layout') |
17 | |
18 | exports.create = (api) => { |
19 | return nest('message.html.layout', messageLayout) |
20 | |
21 | function messageLayout (msg, opts) { |
22 | if (!(opts.layout === undefined || opts.layout === 'default')) return |
23 | |
24 | var { author, timestamp, meta, action, backlinks } = api.message.html |
25 | if (!isMsg(msg.key)) action = () => {} |
26 | |
27 | var rawMessage = Value(null) |
28 | |
29 | return h('Message -default', { |
30 | attributes: { tabindex: '0' } // needed to be able to navigate and show focus() |
31 | }, [ |
32 | h('section.avatar', {}, api.about.html.avatar(msg.value.author)), |
33 | h('section.top', [ |
34 | h('div.author', {}, author(msg)), |
35 | h('div.title', {}, opts.title), |
36 | h('div.meta', {}, meta(msg, { rawMessage })) |
37 | ]), |
38 | h('section.content', {}, opts.content), |
39 | h('section.raw-content', rawMessage), |
40 | h('section.bottom', [ |
41 | h('div.timestamp', {}, timestamp(msg)), |
42 | h('div.actions', {}, action(msg)) |
43 | ]), |
44 | h('footer.backlinks', {}, backlinks(msg)) |
45 | ]) |
46 | } |
47 | } |
48 |
Built with git-ssb-web