@@ -1,3 +1,13 @@ | |||
const ScreenShareConfig = { | |||
view() { | |||
const checked = ScreenShare.isOn | |||
const onclick = ScreenShare.toggle | |||
return m('label.styled', | |||
m('input[type=checkbox]', {checked, onclick}), | |||
'screen-share', | |||
) | |||
} | |||
} | |||
const ScreenShare = { | |||
isOn: false, | |||
start() { | |||
@@ -8,7 +18,7 @@ const ScreenShare = { | |||
}, | |||
toggle() { | |||
ScreenShare.isOn = !ScreenShare.isOn | |||
ScreenShare.start() | |||
// ScreenShare.start() | |||
}, | |||
view() { | |||
const style = { | |||
@@ -18,3 +28,7 @@ const ScreenShare = { | |||
return m('video.screen[playsinline][autoplay]', {style}) | |||
}, | |||
} | |||
addEventListener('load', () => { | |||
Headers.push([ScreenShareConfig]) | |||
Apps.push([ScreenShare, {key: 'screen-share-container'}]) | |||
}) |
@@ -4,15 +4,8 @@ const Toggle = { | |||
StreamContainer[value] = !StreamContainer[value] | |||
updateSelfVideo() | |||
} | |||
const style = { | |||
'font-family': 'monospace', | |||
'display': 'inline-flex', | |||
'justify-content': 'center', | |||
'align-items': 'center', | |||
'padding': '0 0.5em', | |||
} | |||
const checked = StreamContainer[value] | |||
return m('label', {style}, | |||
return m('label.styled', | |||
m('input[type=checkbox]', {checked, onclick}), | |||
label, | |||
) |
@@ -9,6 +9,7 @@ | |||
<script src="/libs/purify.min.js"></script> | |||
<script src="/pico.js" defer></script> | |||
<script src="/apps/streams.js"></script> | |||
<script src="/apps/screen.js"></script> | |||
<script src="/apps/chat.js"></script> | |||
<!-- <script src="/apps/volume.js"></script> --> | |||
<!-- <script src="/apps/screen.js"></script> --> | |||
@@ -24,6 +25,22 @@ body { | |||
grid-template-rows: auto 1fr; | |||
overflow: hidden; | |||
} | |||
label.styled { | |||
font-family: monospace; | |||
display: inline-flex; | |||
justify-content: center; | |||
align-items: center; | |||
padding: 0 0.5em; | |||
} | |||
header { | |||
display: grid; | |||
grid-auto-flow: column; | |||
justify-items: start; | |||
margin-right: auto; | |||
} | |||
main { | |||
overflow: hidden; | |||
} | |||
</style> | |||
<body>PicoChat requires JS</body> | |||
</html> |
@@ -175,14 +175,8 @@ const Base = { | |||
autocomplete: 'off', | |||
value: localStorage.username, | |||
} | |||
const headerStyle = { | |||
display: 'grid', | |||
gridAutoFlow: 'column', | |||
justifyItems: 'start', | |||
marginRight: 'auto', | |||
} | |||
return [ | |||
m('header', {style: headerStyle}, | |||
m('header', | |||
State.isConnected | |||
? Headers.map(h => m(...h)) | |||
: [ | |||
@@ -193,7 +187,7 @@ const Base = { | |||
), | |||
], | |||
), | |||
m('main', {style: {overflow: 'hidden'}}, | |||
m('main', | |||
State.isConnected | |||
? Apps.map(a => m(...a)) | |||
: [ |