import { IconLookup } from '@fortawesome/fontawesome-svg-core'; import { faPhoneSlash, faSync } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, observable } from 'mobx'; import { observer } from 'mobx-react'; import { Doc } from '../../../fields/Doc'; import { InkTool } from '../../../fields/InkField'; import '../../views/nodes/WebBox.scss'; import { DocumentDecorations } from '../DocumentDecorations'; import { CollectionFreeFormDocumentViewProps } from '../nodes/CollectionFreeFormDocumentView'; import { FieldView, FieldViewProps } from '../nodes/FieldView'; import './DashWebRTCVideo.scss'; import { hangup, initialize, refreshVideos } from './WebCamLogic'; import React = require('react'); /** * This models the component that will be rendered, that can be used as a doc that will reflect the video cams. */ @observer export class DashWebRTCVideo extends React.Component { private roomText: HTMLInputElement | undefined; @observable remoteVideoAdded: boolean = false; @action changeUILook = () => { this.remoteVideoAdded = true; }; /** * Function that submits the title entered by user on enter press. */ private onEnterKeyDown = (e: React.KeyboardEvent) => { if (e.keyCode === 13) { const submittedTitle = this.roomText!.value; this.roomText!.value = ''; this.roomText!.blur(); initialize(submittedTitle, this.changeUILook); } }; public static LayoutString(fieldKey: string) { return FieldView.LayoutString(DashWebRTCVideo, fieldKey); } @action onClickRefresh = () => { refreshVideos(); }; onClickHangUp = () => { hangup(); }; render() { const content = (
DashWebRTC
(this.roomText = e!)} onKeyDown={this.onEnterKeyDown} />
); const frozen = !this.props.isSelected() || DocumentDecorations.Instance.Interacting; const classname = 'webBox-cont' + (this.props.isSelected() && Doc.ActiveTool === InkTool.None && !DocumentDecorations.Instance.Interacting ? '-interactive' : ''); return ( <>
{content}
{!frozen ? null :
} ); } }