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

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