) | ) | ||||
}, | }, | ||||
} | } | ||||
marked.setOptions({ | |||||
breaks: true, | |||||
}) | |||||
addEventListener('focus', m.redraw) | addEventListener('focus', m.redraw) | ||||
addEventListener('post', ({detail}) => { | addEventListener('post', ({detail}) => { | ||||
Chat.posts.push(detail) | Chat.posts.push(detail) | ||||
Chat.posts = [] | Chat.posts = [] | ||||
Chat.unseenCount = 0 | Chat.unseenCount = 0 | ||||
}) | }) | ||||
marked.setOptions({ | |||||
breaks: true, | |||||
addEventListener('load', () => { | |||||
Headers.push([ChatConfig]) | |||||
Apps.push([Shadow, {key: 'chat-shadow', app: Chat}]) | |||||
}) | }) |
) | ) | ||||
}, | }, | ||||
} | } | ||||
const signalPeerStop = (username) => signal({kind: 'peerInfo', value: {type: 'stop'}, source: username}) | |||||
const signalPeerStop = (username) => { | |||||
signal({kind: 'peerInfo', value: {type: 'stop'}, source: username}) | |||||
} | |||||
addEventListener('pagehide', () => State.online.forEach(signalPeerStop)) | addEventListener('pagehide', () => State.online.forEach(signalPeerStop)) | ||||
addEventListener('logout', () => State.online.forEach(signalPeerStop)) | addEventListener('logout', () => State.online.forEach(signalPeerStop)) | ||||
addEventListener('load', () => { | |||||
Headers.push([VideoConfig]) | |||||
Apps.push([StreamContainer, {key: 'stream-container'}]) | |||||
}) |
<script src="/libs/mithril.min.js"></script> | <script src="/libs/mithril.min.js"></script> | ||||
<script src="/libs/marked.min.js"></script> | <script src="/libs/marked.min.js"></script> | ||||
<script src="/libs/purify.min.js"></script> | <script src="/libs/purify.min.js"></script> | ||||
<script src="/pico.js" defer></script> | |||||
<script src="/apps/streams.js"></script> | <script src="/apps/streams.js"></script> | ||||
<script src="/apps/chat.js"></script> | <script src="/apps/chat.js"></script> | ||||
<script src="/apps/volume.js"></script> | |||||
<!-- <script src="/apps/volume.js"></script> --> | |||||
<!-- <script src="/apps/screen.js"></script> --> | <!-- <script src="/apps/screen.js"></script> --> | ||||
<script src="/pico.js" defer></script> | |||||
</head> | </head> | ||||
<body style="margin: 0; padding: 0;"> | <body style="margin: 0; padding: 0;"> | ||||
<div>PicoChat requires JS</div> | <div>PicoChat requires JS</div> |
} | } | ||||
return m('main', {style: mainStyle}, | return m('main', {style: mainStyle}, | ||||
m('header', {style: headerStyle}, | m('header', {style: headerStyle}, | ||||
State.isConnected ? [ | |||||
m('button', {onclick: Base.sendLogout}, 'log-out'), | |||||
m(VideoConfig), | |||||
m(ChatConfig), | |||||
m('button', {onclick: VolumeMap.toggle}, 'volume'), | |||||
// m('button', {onclick: ScreenShare.toggle}, 'screen'), | |||||
] : [ | |||||
State.isConnected ? Headers.map(h => m(...h)) : [ | |||||
m('form.login', | m('form.login', | ||||
{onsubmit: Base.sendLogin}, | {onsubmit: Base.sendLogin}, | ||||
m('input', attrs), | m('input', attrs), | ||||
], | ], | ||||
m('span.error', State.info), | m('span.error', State.info), | ||||
), | ), | ||||
State.isConnected ? [ | |||||
m(StreamContainer, {key: 'lolo'}), | |||||
m(Shadow, {key: 'chat-shadow', app: Chat}), | |||||
m(Shadow, {key: 'map-shadow', app: VolumeMap}), | |||||
// m(Shadow, {key: 'screen-shadow', app: ScreenShare}), | |||||
] : m(Settings), | |||||
State.isConnected ? Apps.map(a => m(...a)) : null, | |||||
) | ) | ||||
}, | }, | ||||
} | } | ||||
m.mount(document.body, Base) | |||||
const Headers = [ | |||||
['button', {onclick: Base.sendLogout}, 'log-out'], | |||||
// m('button', {onclick: VolumeMap.toggle}, 'volume'), | |||||
// m('button', {onclick: ScreenShare.toggle}, 'screen'), | |||||
] | |||||
const Apps = [ | |||||
// m(Shadow, {key: 'map-shadow', app: VolumeMap}), | |||||
// m(Shadow, {key: 'screen-shadow', app: ScreenShare}), | |||||
] | |||||
addEventListener('load', () => m.mount(document.body, Base)) |