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.9KB

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