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

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