React

HTML

<div id="app"></div>

CSS

video {
  max-width: 100%;
}

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
}

li {
  margin: 8px 0;
}

h2 {
  font-weight: bold;
  margin-bottom: 15px;
}

.done {
  color: rgba(0, 0, 0, 0.3);
  text-decoration: line-through;
}

input {
  margin-right: 5px;
}

React

const TodoApp = () => {
	const requestFullscreen = () => {
  	document.body.requestFullscreen()
  }
  const share = () => {
  	navigator.mediaDevices.getDisplayMedia()
    	.then((stream) => {
      	window.stream = stream
        console.log('success', stream)
      })
      .catch((err) => {
      	console.log('err', err)
      })
  }
	return (
  	<div>
      <button onClick={requestFullscreen}>requestFullscreen</button>
      <button onClick={share}>Share</button>
      <video id='video' autoPlay={true}></video>
    </div>
  )
}

window.stream = {active: false}
window.lastActive = false

window.setInterval(() => {
	console.log('active: ', window.stream.active)
  if (window.stream.active !== lastActive) {
  	if (window.stream.active) {
    	document.querySelector('video').srcObject = window.stream
    } else {
    	document.querySelector('video').srcObject = null
    }
    lastActive = window.stream.active
  }
}, 5000)
ReactDOM.render(<TodoApp />, document.querySelector("#app"))