You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.0KB

  1. const ScreenShareConfig = {
  2. view() {
  3. const checked = ScreenShare.isOn
  4. const onclick = ScreenShare.toggle
  5. return m('label.styled',
  6. m('input[type=checkbox]', {checked, onclick}),
  7. 'screen-share',
  8. )
  9. }
  10. }
  11. const ScreenShare = {
  12. isOn: false,
  13. start() {
  14. const screen = document.querySelector('video.screen')
  15. if(screen) {
  16. navigator.mediaDevices.getDisplayMedia()
  17. .then(s => {screen.srcObject = s})
  18. .catch(e => console.error(e))
  19. }
  20. },
  21. toggle() {
  22. ScreenShare.isOn = !ScreenShare.isOn
  23. if(ScreenShare.isOn) {
  24. // setTimeout(ScreenShare.start, 100)
  25. }
  26. },
  27. view() {
  28. const style = {
  29. overflow: 'scroll',
  30. }
  31. return ScreenShare.isOn && m('div', {style},
  32. m('video.screen[playsinline][autoplay]'),
  33. )
  34. },
  35. }
  36. addEventListener('load', () => {
  37. Headers.push([ScreenShareConfig])
  38. Apps.push([ScreenShare, {key: 'screen-share-container'}])
  39. })