Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

63 Zeilen
1.8KB

  1. const ScreenShareConfig = {
  2. toggle() {
  3. if(ScreenShare.isOn && ScreenShare.isStreaming) {
  4. wire({kind: 'screen-sharing-stop'})
  5. }
  6. else {
  7. ScreenShare.requestScreen()
  8. }
  9. },
  10. view() {
  11. const checked = ScreenShare.isOn
  12. const onclick = ScreenShareConfig.toggle
  13. return m('label.styled',
  14. m('input[type=checkbox]', {checked, onclick}),
  15. 'screen-share',
  16. )
  17. }
  18. }
  19. const ScreenShare = {
  20. streamer: null,
  21. stream: null,
  22. get isStreaming() {
  23. return ScreenShare.streamer === State.username
  24. },
  25. get isOn() {
  26. return !! ScreenShare.streamer
  27. },
  28. async requestScreen() {
  29. // ScreenShare.stream = await navigator.mediaDevices.getDisplayMedia()
  30. // ScreenShare.streamer = State.username
  31. // wire({kind: 'screen-sharing-start'})
  32. },
  33. view() {
  34. const style = {
  35. overflow: 'scroll',
  36. backgroundColor: 'black',
  37. color: 'white',
  38. fontFamily: 'monospace',
  39. }
  40. return ScreenShare.isOn && m('.screen-share', {style},
  41. m('.streamer', `${ScreenShare.streamer}'s stream`),
  42. m('video.screen[playsinline][autoplay]', {srcObject: ScreenShare.stream}),
  43. )
  44. },
  45. }
  46. addEventListener('screen-sharing-start', ({detail}) => {
  47. ScreenShare.streamer = detail.source
  48. })
  49. addEventListener('screen-sharing-stop', ({detail}) => {
  50. if(ScreenShare.stream) {
  51. ScreenShare.stream.getTracks().forEach(track => track.stop())
  52. ScreenShare.stream = null
  53. }
  54. ScreenShare.streamer = null
  55. })
  56. addEventListener('load', () => {
  57. doNotLog.add('screen-share-start')
  58. doNotLog.add('screen-share-stop')
  59. Headers.push([ScreenShareConfig])
  60. Apps.push([ScreenShare, {key: 'screen-share-container'}])
  61. })
  62. setTimeout(ScreenShare.requestScreen, 200)