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.

LargeVideo.web.js 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* @flow */
  2. import React, { Component } from 'react';
  3. import { Watermarks } from '../../base/react';
  4. import { VideoQualityLabel } from '../../video-quality';
  5. import { RecordingLabel } from '../../recording';
  6. declare var interfaceConfig: Object;
  7. /**
  8. * Implements a React {@link Component} which represents the large video (a.k.a.
  9. * the conference participant who is on the local stage) on Web/React.
  10. *
  11. * @extends Component
  12. */
  13. export default class LargeVideo extends Component<*> {
  14. /**
  15. * Implements React's {@link Component#render()}.
  16. *
  17. * @inheritdoc
  18. * @returns {ReactElement}
  19. */
  20. render() {
  21. return (
  22. <div
  23. className = 'videocontainer'
  24. id = 'largeVideoContainer'>
  25. <div id = 'sharedVideo'>
  26. <div id = 'sharedVideoIFrame' />
  27. </div>
  28. <div id = 'etherpad' />
  29. <Watermarks />
  30. <div id = 'dominantSpeaker'>
  31. <div className = 'dynamic-shadow' />
  32. <img
  33. id = 'dominantSpeakerAvatar'
  34. src = '' />
  35. </div>
  36. <div id = 'remotePresenceMessage' />
  37. <span id = 'remoteConnectionMessage' />
  38. <div>
  39. <div className = 'video_blurred_container'>
  40. <video
  41. autoPlay = { true }
  42. id = 'largeVideoBackground'
  43. muted = 'true' />
  44. </div>
  45. {
  46. /**
  47. * FIXME: the architecture of elements related to the
  48. * large video and the naming. The background is not
  49. * part of largeVideoWrapper because we are controlling
  50. * the size of the video through largeVideoWrapper.
  51. * That's why we need another container for the the
  52. * background and the largeVideoWrapper in order to
  53. * hide/show them.
  54. */
  55. }
  56. <div id = 'largeVideoWrapper'>
  57. <video
  58. autoPlay = { true }
  59. id = 'largeVideo'
  60. muted = { true } />
  61. </div>
  62. </div>
  63. <span id = 'localConnectionMessage' />
  64. { interfaceConfig.filmStripOnly ? null : <VideoQualityLabel /> }
  65. <RecordingLabel />
  66. </div>
  67. );
  68. }
  69. }